【问题标题】:How to create PDF file links with relative file path and PDFsharp?如何使用相对文件路径和 PDFsharp 创建 PDF 文件链接?
【发布时间】:2016-05-13 18:00:17
【问题描述】:

我的应用程序创建一个 Content.pdf 文件,该文件链接到 Server.pdf 和 Client.pdf。这是文件夹结构:

  • ..\MyApp\Ressources\Content.pdf
  • ..\MyApp\Ressources\Server\Server.pdf
  • ..\MyApp\Ressources\Client\Client.pdf

此外,文件夹和文件被刻录在 CD/DVD 上或备份到网络驱动器上 - 这导致我使用相对文件路径。我使用以下代码创建 Content.pdf:

相对的WebLink:

var relativeFileLinkPath =  "./" + Directory.GetParent(doc.Uri.LocalPath).Name + "/"+ doc.OutputFileName;
page.AddWebLink(pdfrect, relativeFileLinkPath);

相对文件链接:

var relativeFileLinkPath =  "./" + Directory.GetParent(doc.Uri.LocalPath).Name + "/"+ doc.OutputFileName;
page.AddFileLink(pdfrect, relativeFileLinkPath);

两者都可以在本地驱动器上正常工作,但我的问题是:

  • WebLink 无法在网络驱动器上工作/打开
  • FileLinks 关闭 Content.pdf 并将其替换为链接的 pdf 文件

问题:

如何修改 FileLink 以在新的(PDF 阅读器)实例/窗口中打开?

  • 单击 FileLink 时按住 CTRL 键是一种选择,但不是一个好的解决方案。

相对 PDF 网页链接的正确语法是什么?

【问题讨论】:

    标签: c# pdf hyperlink relative-path pdfsharp


    【解决方案1】:

    AddFileLink 是文件夹中并排放置文件的正确方法。

    要控制是否打开新窗口,需要对 PDFsharp 的 PdfLinkAnnotation 类进行小修改。 PDF 支持 PDFsharp 当前无法设置的NewWindow 属性。

    获取 PDFsharp 的源代码,在 PdfLinkAnnotation.cs 中找到 "<</Type/Action/S/Launch/F<</Type/Filespec/F{0}>> >>" 并将其替换为 "<</Type/Action/S/Launch/NewWindow true/F<</Type/Filespec/F{0}>> >>"

    免责声明:我没有测试提议的更改 - 我希望它在语法上是正确的,并且我希望它符合您的要求。
    免责声明 2:PDFsharp 1.50 beta 3 需要此更改。以后的版本可能支持该标志。

    【讨论】:

    • 我通过参考管理器将 PDFSharp 添加到我的 WPF 应用程序中。 (packages\PDFsharp-MigraDoc-WPF.1.32.2608.0) 我必须删除包并手动添加还是有其他选择?
    猜你喜欢
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多