%%
%% This is file `intopdf.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% intopdf.dtx  (with options: `package')
%% 
%% Copyright (C) 2018 by Marcel Krueger
%%
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
%% version 1.3c of this license or (at your option) any later
%% version. The latest version of this license is in:
%%
%% http://www.latex-project.org/lppl.txt
%%
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3,xparse}
\ProvidesExplPackage
  {intopdf}
  {2019/05/28}
  {0.2.1}
  {Embed non-PDF files into PDF with hyperlink}

\RequirePackage{hyperref}
\msg_new:nnnn{intopdf}{engine-unsupported}
  {Your~TeX~engine~is~not~supported~by~intopdf.}
  {To~use~intopdf,~you~have~to~use~pdfLaTeX~or~LuaLaTeX.}
\cs_generate_variant:Nn\str_case:nnF{VnF}
\str_case:VnF\c_sys_engine_str{
  {pdftex}{
    \cs_new:Nn\__intopdf_escape_name:n{\pdfescapename{#1}}
    \cs_new:Nn\__intopdf_escape_string:n{(\pdfescapestring{#1})}
    \cs_new:Nn\__intopdf_pdfobj:n{
      \tex_immediate:D\pdftex_pdfobj:D{<<#1>>}
    }
    \cs_new:Nn\__intopdf_pdfstream_file:nn{
      \tex_immediate:D\pdftex_pdfobj:D stream attr {#1} file {#2}
    }
    \cs_new:Nn\__intopdf_lastobj_ref:{
      \c_space_tl
      \int_use:N\pdftex_pdflastobj:D
      \c_space_tl
      0
      \c_space_tl
      R
    }
    \cs_new:Npn\__intopdf_annot:nnw#1#2{
      \leavevmode
      \pdftex_pdfstartlink:D attr{#1} user {#2}
    }
    \cs_new:Nn\__intopdf_annot_end:{
      \pdftex_pdfendlink:D
    }
  }
  {luatex}{
    \RequirePackage{pdftexcmds}
    \cs_new:Nn\__intopdf_escape_name:n{\pdf@escapename{#1}}
    \cs_new:Nn\__intopdf_escape_string:n{(\pdf@escapestring{#1})}
    \cs_new:Nn\__intopdf_pdfobj:n{
      \tex_immediate:D\luatex_pdfextension:D obj{<<#1>>}
    }
    \cs_new:Nn\__intopdf_pdfstream_file:nn{
      \tex_immediate:D\luatex_pdfextension:D obj stream attr {#1} file {#2}
    }
    \cs_new:Nn\__intopdf_lastobj_ref:{
      \c_space_tl
      \luatex_pdffeedback:D lastobj
      \c_space_tl
      0
      \c_space_tl
      R
    }
    \cs_new:Npn\__intopdf_annot:nnw#1#2{
      \leavevmode
      \luatex_pdfextension:D startlink attr{#1} user {#2}
    }
    \cs_new:Nn\__intopdf_annot_end:{
      \luatex_pdfextension:D endlink
      \scan_stop:
    }
  }
}{
  \msg_critical:nn{intopdf}{engine-unsupported}
}
\cs_new:Nn\__intopdf_annot:nnn{
  \__intopdf_annot:nnw{#1}{#2}
  #3
  \__intopdf_annot_end:
}
\cs_new_protected:Nn\intopdf_attach_link:nnnnn{
  \__intopdf_pdfstream_file:nn{
    /Subtype /\__intopdf_escape_name:n{#3}
  }{#2}
  \__intopdf_pdfobj:n{
    /Type /Filespec
    /F \__intopdf_escape_string:n{#1}
    /EF << /F \__intopdf_lastobj_ref: >>
    /Desc \__intopdf_escape_string:n{#4}
  }%
  \__intopdf_annot:nnn{
    \Hy@setpdfborder
    \tl_if_empty:NF\@pdfhighlight{
      /H\@pdfhighlight
    }
    \cs_if_free:NF\@urlbordercolor{
      /C[\@urlbordercolor]
    }
  }{
    /Subtype /Link
  }{
    \__intopdf_annot:nnn{}{
      /Subtype /FileAttachment
      /FS \__intopdf_lastobj_ref:
      /F\c_space_tl 416
      /CA\c_space_tl 0
      /Contents \__intopdf_escape_string:n{#4}
    }{
      #5
    }
  }
}
\cs_new_protected:Npn \intopdf_attach_link:nnnn #1{
  \intopdf_attach_link:nnnnn{#1}{#1}
}
\NewDocumentCommand\attachandlink{O{#2}mr[]mm}{
  \intopdf_attach_link:nnnnn{#1}{#2}{#3}{#4}{#5}
}
\endinput
%%
%% End of file `intopdf.sty'.
