如何使用相对文件路径和PDFsharp创建PDF文件链接?

时间:2016-02-04 08:11:00

标签: c# pdf hyperlink relative-path pdfsharp

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

  • .. \ MyApp的\ Ressources \ Content.pdf
  • .. \ MyApp的\ Ressources \服务器\ Server.pdf
  • .. \ MyApp的\ Ressources \客户端\ Client.pdf

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

相对WebLink:

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

相对FileLink:

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

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

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

问题:

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

获取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需要进行此更改。后续版本可能支持该标记。