【问题标题】:Re-open pdf with Acrobat Reader on different pages in c#在 c# 的不同页面上使用 Acrobat Reader 重新打开 pdf
【发布时间】:2018-04-03 18:37:01
【问题描述】:

我想随后使用 c# 和 Adob​​e Acrobat Reader 在不同页面上多次打开同一个 pdf 文档。操作系统是windows。

this answer 我学会了如何唤起启动阅读器并在所需页面或目标位置打开 pdf 的过程。这工作正常。但是,重新打开 pdf 文档的唯一可能性似乎是选项/n,它会创建一个新的 Acrobat Reader 窗口。如果没有此选项,Acrobat 似乎会忽略任何打开已打开文件的请求。

是否有可能在不同页面重新打开已打开的 pdf 而无需在阅读器中创建新标签或窗口?

【问题讨论】:

    标签: c# pdf command-line-arguments acrobat


    【解决方案1】:

    我认为您的其他选择是使用 DDE 或 FDF。 DDE 的缺点是 Adob​​e 在某些版本之前开始将服务名称从一个版本更改为另一个版本(实际:“AcroViewR17”)。更多的工作是使用带有 js 代码的 FDF(特殊结构化文本文件)。从第 4 版开始就没有那么优雅但可靠了。

    您将在附件中找到您需要的 FDF 文件。您必须从 C# 编写和执行它。仅更改文件名和 js 代码流。 文件名必须独立于操作系统:而不是 D:\Test.pdf 写入 /D/test.pdf。 对于测试,您只需将其保存为 test.fdf 并通过双击执行。

    祝你好运,莱因哈德

    %FDF-1.2 %%---DEMO EXECUTE JAVASCRIPT VIA FDF---%%
    1 0 obj << /FDF << /F (/D/Test.pdf)  /JavaScript << /Before 2 0 R  >> >> >> endobj
    2 0 obj << >> stream
    
    //my js-code
    app.alert(this.numPages); //view total pages
    this.pageNum=1;           //goto page number 2 (zero-based)
    
    endstream
    endobj
    trailer << /Root 1 0 R >> %%EOF
    

    【讨论】:

    • 这行得通!有两件事有点烦人:1)每次执行脚本时,我都必须在消息框中单击“允许”。 2) 每次执行此脚本时,我仍然从 Acrobat Reader 收到错误消息。消息框只显示“6”,没有任何附加信息。但是,当我点击 OK 时,文档会切换到所需的页面。
    • 回答我自己的评论: 1) Acrobat 阅读器会要求记住这些设置。 2) 我发现app.alert(this.numPages); 行会引发一个消息框。只需将其注释掉以避免出现错误消息。
    • 在解决我的移动电话合同的一些问题后,我会得到答案。但是,到时候您可能会查看 Adob​​e JS-Help 文件,了解其他一些可以在 Reader 中以这种方式使用的可用代码。
    【解决方案2】:

    您可以使用“打开 PDF 参数”:

    AcroRd32.exe /a "page=1" "D:\Test.pdf"
    

    【讨论】:

    • 是的,这将在第 1 页的阅读器中打开 Test.pdf。那么,如何在不使用 /n 创建新阅读器窗口或不手动关闭阅读器的情况下随后在第 2 页打开同一个文档?如果 Test.pdf 已经打开,对我来说执行 AcroRd32.exe /a "page=2" "D:\Test.pdf" 将被忽略。我的问题实际上是关于重新打开文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 2011-01-29
    • 2020-07-05
    • 2011-03-29
    • 2012-03-30
    • 2012-03-09
    相关资源
    最近更新 更多