【问题标题】:Creating a PDF file containing a clickable file attachment创建包含可点击文件附件的 PDF 文件
【发布时间】:2021-10-26 01:53:11
【问题描述】:

我正在尝试恢复一些直接创建 PDF 文件的旧代码(不使用任何 API)。它非常简单,只是一些纯文本,然后是一个或多个附件。我正在努力做到这一点,当读者点击附件名称时,Windows 将使用该文件打开相应的应用程序。

我确定这曾经有效,但现在不行了。将鼠标悬停在附件名称上时,光标变为手形,单击会突出显示该区域,但应用程序没有启动 - 没有任何反应。

我认为问题在于 Adob​​e Reader 中增强的安全性,但事实并非如此。我已关闭所有安全性,并启用了“允许使用外部应用程序打开非 PDF 文件附件”复选框。

那么我的 PDF 格式代码现在不正确吗?下面是一个非常简单的文件的全部内容。附件应位于 c:\temp2\pdf\PDF Attachments\ewsmeet.txt 中。如果有人能看到这个并告诉我问题是什么,我将非常感激。

%PDF-1.4
%âãÏÓ
1 0 obj
<< /Type /Font
/Subtype /Type1
/Name /F1
/BaseFont /Helvetica
/Encoding /WinAnsiEncoding
>>
endobj
2 0 obj
<< /Type /Font
/Subtype /Type1
/Name /F2
/BaseFont /Courier-Bold
/Encoding /WinAnsiEncoding
>>
endobj
3 0 obj
<< /Type /Font
/Subtype /Type1
/Name /F3
/BaseFont /Times-Roman
/Encoding /WinAnsiEncoding
>>
endobj
4 0 obj
[/PDF /Text]
endobj
5 0 obj
<< /Length 184 >>
stream
BT
/F1 12 Tf
10 750 Td
14 TL
(This is dummy text.) '
/F3 12 Tf
() '
/F1 12 Tf
(_______________________________________________________) '
() '
/F2 12 Tf
(Attachment: ewsmeet.txt) '
ET
endstream
endobj
6 0 obj
<<
/Type /Annot
/Subtype /Link
/Rect [94 677 182 690]
/Border [0 0 2]
/C [1 0 0.5]
/A 7 0 R
>>
endobj
7 0 obj
<<
/Type /Action /S /Launch
/Win <</F (c:\\temp2\\pdf\\PDF Attachments\\ewsmeet.txt) >>
>>
endobj
8 0 obj
<< /Type /Page
/Parent 9 0 R
/MediaBox [0 0 600 900]
/Contents 5 0 R
/Annots [6 0 R ]
/Resources << /ProcSet 4 0 R
/Font << /F1 1 0 R /F2 2 0 R /F3 3 0 R >>
>>
>>
endobj
9 0 obj
<< /Type /Pages
/Kids [8 0 R
]
/Count 1
>>
endobj
10 0 obj
<< /Type /Outlines
/Count 0
>>
endobj
11 0 obj
<< /Type /Catalog
/Outlines 10 0 R
/Pages 9 0 R
>>
endobj
xref
0 12
0000000000 65535 f 
0000000015 00000 n 
0000000122 00000 n 
0000000232 00000 n 
0000000341 00000 n 
0000000369 00000 n 
0000000603 00000 n 
0000000713 00000 n 
0000000819 00000 n 
0000000997 00000 n 
0000001055 00000 n 
0000001102 00000 n 
trailer
<< /Size 12
/Root 11 0 R
>>
startxref
1169
%%EOF

【问题讨论】:

    标签: pdf pdf-generation


    【解决方案1】:

    它没有错误,但附件没有嵌入,所以没有什么可以打开,如果文件在系统中,最好记事本可能会触发。

    因此,您的示例在第一次接受它作为 PDF-XChange 或旧版 Acrobat 中的受信任链接后将毫无疑问地运行。

    请注意,其他读者可能会直接忽略该请求

    对于简单的文本嵌入,您可以包含与此类似的文件

    21 0 obj
    <<
      /Type /EmbeddedFile
      /Subtype /text#2Fplain
      /Length 36
    >>
    stream
    Hello World 
    ewsmeet.txt is my name
    endstream
    endobj
    
    22 0 obj
    <<
      /Type /Filespec
      /F (ewsmeet.txt)
      /UF (ewsmeet.txt)
      /EF <<
        /F 21 0 R
      >>
    >>
    endobj
    

    【讨论】:

    • 感谢您的回复。我需要让任何类型的文件(.doc、.xls、.pdf)工作,而不仅仅是文本。我似乎很好奇这曾经有效(我上次尝试它,几年前)所以读者发生了一些变化。我现在通过使用 /URI 链接而不是 /LAUNCH 可以让它工作,但这并不理想。
    • 你能澄清一下“第一次接受它作为可信链接”的意思吗?我正在使用 Adob​​e Reader 11 进行测试。当我单击使用 /LAUNCH 创建的链接时,什么也没有发生,也没有什么可以接受的。在“增强的安全性”首选项中,我“信任”了附件的位置,但这并没有什么区别。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 2012-02-12
    相关资源
    最近更新 更多