打开指定PDF章节的通用方法是什么?

问题描述 投票:0回答:1

我想在Windows中的特定章节以编程方式打开pdf文件(使用C#,但我认为,这并不重要)。

对于 Acrobat(和其他独立查看器),可以执行以下操作:

System.Diagnostics.Process.Start("C:\\Temp\\Test.pdf", "/A \"nameddest=introduction\"");

对于 Firefox(和其他浏览器),如果直接在浏览器中调用,则以下 URL 有效:

file:///C:/Temp/Test.pdf#nameddest=introduction

但是,如果 Firefox 是默认的 pdf 查看器,则 Acrobat 命令不起作用,并且以下命令也不起作用(它会打开 pdf 文件,但不会打开指定的章节):

System.Diagnostics.Process.Start(@"file:///C:/Temp/Test.pdf#nameddest=introduction");

是否有一些通用的方法可以达到预期的结果?两者似乎都遵循类似的语法,但我没有找到一种方法,不知道用户正在使用哪个 pdf 查看器。

c# pdf browser acrobat
1个回答
0
投票

如果您已将命名目标添加到 PDF,它们将被嵌入以供大多数 PDF 查看器使用。在这里,我使用通用提供的 Windows ePub 和 PDF 查看器(当前 MS Edge 版本 119.0.2151.72(官方版本))。

"%ProgramFiles%\Microsoft\Edge\Application\msedge.exe" "file:///C:/Temp/Test.pdf#nameddest=Introduction"

注释

命名的目的地不是大纲书签,当两者同时使用时可能是一种常见的误解,就像这里的情况一样。

案例很重要,是“介绍”而不是“介绍”。

它们可以设置为缩放,但观看者可能不会使用它。 Acrobat 将使用垂直位置,其他(例如 MS Edge)可能无法滚动。

"%ProgramFiles%\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" /A nameddest=Introduction "C:/Temp/Test.pdf" 

命名目的地通常是数字 UID(文档中不能有 2 个相同的目的地)

指定的目的地不得包含空格,并且应避免使用所有标点符号,但通常使用点或 h-y-p-h-e-n 进行分隔。

WebViewer (MS Edge) 中的嵌入式查看器可以独立于浏览器从命令行调用,并且可以使用相同的功能。

当心

旧版 Adobe 功能取决于当前内置的基于 Foxit 的 PDFium 的使用[见上文]。它可能无法与任何近期“由 Adobe 提供支持”的 PDF 插件一起使用 [见下文,完全相同的 Edge.exe、file.pdf 和 Adobe# 调用]

© www.soinside.com 2019 - 2024. All rights reserved.