将非 PDF 文件(例如 BibTex)嵌入 PDF 中,并在 PDF 中添加超链接

将非 PDF 文件(例如 BibTex)嵌入 PDF 中,并在 PDF 中添加超链接

这个问题导致了一个新的方案的出现:
intopdf

目的

我想要实现以下目标:

  1. 嵌入paper.bibPDF

  2. paper.bib应该使用与 mimetype 关联的操作系统工具打开application/x-bibtex

  3. paper.bib在 Acrobat Reader 的附件部分列出

    附件视图

  4. 附件部分应有适当的描述

  5. paper.bib在 PDF 中的“\EmbedFiles”中列出(可使用 Acrobat Pro 检查)

    嵌入文件

  6. paper.bib在书签部分列出

    SumatraPDF 中的书签部分

  7. paper.bibPDF 中有一个有效链接

    工作链接

    单击

  8. 在印刷版中也显示链接

  9. 没有奇怪的附加图标。不应出现以下内容:

    奇怪的图标

  10. 链接应标记为链接

    标记链接

相关问题:

已尝试的解决方案

1.嵌入文件和...一起下肢

\documentclass {article}
\usepackage{mwe}
\usepackage{filecontents}
\usepackage{embedfile}
\usepackage{hypgotoe}

\begin{filecontents}{paper.bib}
@article{demo,
  author={Demo Author}
}
\end{filecontents}

\begin{document}

\embedfile[
  desc={BibTeX entry of this paper},
  mimetype=application/x-bibtex
]{paper.bib}

\href{gotoe:embedded=paper.bib}{BibTeX}

\end{document}
  1. 是:嵌入paper.bibPDF
  2. 是:paper.bib应使用与 mimetype 关联的操作系统工具打开application/x-bibtex
  3. 是:已paper.bib在 Acrobat Reader 的附件部分列出
  4. 是:附件部分应该有适当的描述
  5. 是:已paper.bib在 PDF 中的“\EmbedFiles”中列出
  6. 部分:已paper.bib在书签部分列出(可以:SumatraPDF,不可以:Acrobat Pro X)
  7. paper.bib否: PDF 中有一个有效链接。SumatraPDF 打开tex文件,Acrobat Reader 不执行任何操作
  8. 是:在印刷版中也显示链接
  9. 是:没有奇怪的附加图标
  10. 是:链接应标记为链接

2.航海家

\documentclass {article}
\usepackage{mwe}
\usepackage{filecontents}
\usepackage{navigator}

\begin{filecontents}{paper.bib}
@article{demo,
  author={Demo Author}
}
\end{filecontents}

\begin{document}

\embeddedfile[BibTeX entry of this paper]{paper.bib}{paper.bib}

\openfilelink{paper.bib}{BibTeX}

\end{document}
  1. 是:嵌入paper.bibPDF
  2. 是:paper.bib应使用与 mimetype 关联的操作系统工具打开application/x-bibtex
  3. 是:已paper.bib在 Acrobat Reader 的附件部分列出
  4. 是:附件部分应该有适当的描述
  5. 是:已paper.bib在 PDF 中的“\EmbedFiles”中列出
  6. 否:已paper.bib在书签部分列出
  7. 部分:PDF 中有一个有效链接paper.bib:双击可在 SumatraPDF 中打开文件,但在 Acrobat Reader 中不起作用
  8. 是:在印刷版中也显示链接
  9. 是:没有奇怪的附加图标
  10. 否:链接应标记为链接

3.附加文件

\documentclass {article}
\usepackage{mwe}
\usepackage{filecontents}
\usepackage{attachfile}

\begin{filecontents}{paper.bib}
@article{demo,
  author={Demo Author}
}
\end{filecontents}

\begin{document}

% We need "doubleprint", because the text of \textattachfile is not printed when printing a PDF
% We use the idea from https://tex.stackexchange.com/a/19045/9075, accepting that
% the pointers to the files are renderedin semi-bold way
\newlength{\Urlname}
\newcommand{\doubleprint}[1]{\setlength{\Urlname}{\widthof{#1}}\hspace{-\Urlname}#1}

\textattachfile[%
  print=true,%
  color=0 0 0,%
  icon=Paperclip,%
  description={BibTeX entry of this paper},%
  mimetype=application/x-bibtex%
]{paper.bib}{BibTeX}%
\doubleprint{BibTeX}

\end{document}
  1. 是:嵌入paper.bibPDF
  2. 是:paper.bib应使用与 mimetype 关联的操作系统工具打开application/x-bibtex
  3. 是:已paper.bib在 Acrobat Reader 的附件部分列出
  4. 是:附件部分应该有适当的描述
  5. 否:已paper.bib在 PDF 中的“\EmbedFiles”中列出 未嵌入
  6. 否:已paper.bib在书签部分列出
  7. 部分:在 PDF 中有一个有效链接paper.bib。在 Acrobat Reader 中双击,在 SumatraPDF 中单击
  8. 是:在印刷版中也显示链接
  9. 否:奇怪的附加图标 Acrobat Reader
  10. 否:链接应标记为链接
调试信息

/Type /Embeddedfile条目出现在 PDF 中嵌入文本的旁边,而不是在全局文件目录中:

嵌入文件信息

该图标表示附件。在 Acrobat Pro 中,可以拖放附件:

可拖拽附件

4.嵌入文件结合 stackoverflow 调整

该解决方案扩展了第一个解决方案

提议:

\documentclass {article}
\usepackage{mwe}
\usepackage{filecontents}
\usepackage{embedfile}
\usepackage{hyperref}
\usepackage[atend]{bookmark}

% How do I make an attached non-pdf file display like a link?
% (http://tex.stackexchange.com/q/230581)
\makeatletter
\newcommand*{\embeddedfilelink}[2]{%
  \begingroup
    \leavevmode
    \pdfstartlink
      attr{%
        \Hy@setpdfborder
        \ifx\@pdfhighlight\@empty
        \else
          /H\@pdfhighlight
        \fi
        \ifx\@filebordercolor\relax
        \else
          /C[\@filebordercolor]%
        \fi
      }%
      user{%
       /Subtype/Link%
       /A<<%
         /Type/Action%
         /S/JavaScript%
         /JS(this.exportDataObject({cName: "#1", nLaunch: 2}))%
       >>%
      }%
      \relax
    \Hy@colorlink\@filebordercolor#2%
    \close@pdflink
  \endgroup
}
\makeatother

\begin{filecontents}{paper.bib}
@article{demo,
  author={Demo Author}
}
\end{filecontents}

\begin{document}

\embedfile[
  desc={BibTeX entry of this paper},
  mimetype=application/x-bibtex
]{paper.bib}

\embeddedfilelink{paper.bib}{BibTeX}
%hint from https://tex.stackexchange.com/a/260439/9075
\BookmarkAtEnd{
  \bookmarksetup{startatroot}
  \bookmark[level=0,rawaction={
    /S/JavaScript/JS(%
      this.exportDataObject({cName: "paper.bib", nLaunch: 2})%
    )%
  }]{paper.bib}
}

\end{document}
  1. 是:嵌入paper.bibPDF
  2. 是:paper.bib应使用与 mimetype 关联的操作系统工具打开application/x-bibtex
  3. 是:已paper.bib在 Acrobat Reader 的附件部分列出
  4. 是:附件部分应该有适当的描述
  5. 是:已paper.bib在 PDF 中的“\EmbedFiles”中列出
  6. 部分:已paper.bib在书签部分列出(SumatraPDF 中两次,OK:Acrobat Pro X)
  7. paper.bib部分: PDF 中有一个有效链接。SumatraPDF 打开tex文件,Acrobat Reader 打开正确的应用程序
  8. 是:在印刷版中也显示链接
  9. 是:没有奇怪的附加图标
  10. 是:链接应标记为链接

调试提示

列出 PDF 内部结构的工具在检查 PDF 文件的最佳工具?. 以上截图由 Acrobat Professional X 制作。iText RUPS似乎接近 Acrobat Professional 的功能。

问题

如何实现吃最少的以下目标得到满足:

  1. paper.bib应该使用与 mimetype 关联的操作系统工具打开application/x-bibtex
  2. paper.bib在 Acrobat Reader 的附件部分列出
  3. 附件部分应有适当的描述
  4. paper.bib在书签部分列出
  5. paper.bibPDF 中有一个有效链接
  6. 在印刷版中也显示链接

可选地,以下内容是好的:

  1. 没有奇怪的附加图标。
  2. 链接应标记为链接

答案1

这个解决方案并不能解决所有的问题,但是它并不适合评论:

这与 类似attachfile,但没有\doubleprint和 9、10 固定,并且使注释不可移动:

\documentclass {article}
\usepackage{mwe}
\usepackage{filecontents}
\usepackage{hyperref}

\begin{filecontents}{paper.bib}
@article{demo,
  author={Demo Author}
}
\end{filecontents}

\makeatletter
\newcommand\attachandlink[4]{%
  \leavevmode%
  \immediate\pdfobj stream attr {
    /Subtype /\pdfescapename{#2}
  } file{#1}%
  \immediate\pdfobj{<<
    /Type /Filespec
    /F (\pdfescapestring{#1})
    /EF << /F \the\pdflastobj\space 0 R >>
  >>}%
  \pdfstartlink user {
    /Subtype /FileAttachment
    /FS \the\pdflastobj\space 0 R
    /F 416
    /CA 0
    /Contents (\pdfescapestring{#3 Double click to open.})
  }%
  \pdfstartlink attr{
    \Hy@setpdfborder
    \ifx\@pdfhighlight\@empty%
    \else%
      /H\@pdfhighlight
    \fi%
    \ifx\@urlbordercolor\relax%
    \else%
      /C[\@urlbordercolor]
    \fi%
  } user {
    /Subtype /Link
  }%
  #4%
  \pdfendlink%
  \pdfendlink%
}
\makeatother

\begin{document}

\attachandlink{paper.bib}{application/x-bibtex}{BibTeX entry for this paper}{BibTeX}

\end{document}
  1. 是:将 paper.bib 嵌入 PDF
  2. 是:paper.bib 应该使用与 mimetype application/x-bibtex 关联的操作系统工具打开
  3. 是:在 Acrobat Reader 的附件部分列出 paper.bib
  4. 是:附件部分应该有适当的描述
  5. 否:在 PDF 中的“/EmbeddedFiles”中列出 paper.bib 
  6. 否:将 paper.bib 列在书签部分
  7. 是:PDF 中有一个指向 paper.bib 的有效链接,需要在 Adob​​e Reader 上双击
  8. 是:在印刷版中也显示链接
  9. 是/否:Adobe Reader 中仅在鼠标悬停时出现奇怪的附加图标
  10. 是:链接应标记为链接

中列出的目标 5/EmbeddedFiles很容易添加,并且可能也会添加paper.bib到 SumatraPDF 的书签部分(我不确定这一点,我无法让 SumatraPDF 显示任何 PDF 的书签部分),但会有副作用:要在 Adob​​e Reader 中不使用 Javascript 打开嵌入文件,必须将其作为File Attachment Annotation特殊位置添加,而/EmbeddedFiles目录中引用的文件则附加到整个文档。一个文件可以通过两种方式引用,但例如 Acrobat Reader 会列出该文件两次。

相关内容