1

请原谅我的英语不好..)) 有两个 PDF 文档。两者都包含 197 页。1-2 页的第一篇论文有指向本文档另一页 (3-197) 的链接。我们需要将这两个文档合并为一个 197 页的文档: • 1 - 2 页 - 从第一个文档开始(带有工作链接,参考应发送到新合并文档的相关页面);• 3-197 页 - 来自第二个文档。

Doc:= New iTextSharp.text.Document();

ReaderDoc1:=New iTextSharp.text.pdf.PdfReader(FileName1);

ReaderDoc2:=New iTextSharp.text.pdf.PdfReader(FileName2);

FStream:=New System.IO.FileStream(OutFileName, System.IO.FileMode.CreateNew);

Writer := New iTextSharp.text.pdf.PdfCopy(Doc, FStream);

Doc.Open(); 

Writer.AddPage(Writer.GetImportedPage(ReaderDoc1,1));

Writer.AddPage(Writer.GetImportedPage(ReaderDoc1,2));

PageCount := ReaderDoc2.NumberOfPages;

For f := 3 To PageCount Do

Writer.AddPage(Writer.GetImportedPage(ReaderDoc2, f)); 

End For;

结果,链接被破坏。向您展示如何保持链接正常工作。谢谢您的帮助!!!

4

1 回答 1

1

您有一个文档 A.pdf 和一个文档 B.pdf。文档 A.pdf 中的链接参考文档 B.pdf。现在您想将 A.pdf 与 B.pdf 连接起来。如果操作正确,您将得到一个文档 C.pdf,并且链接将被保留。这意味着从文档 A.pdf 导入的链接仍将链接到文档 B.pdf,而不是从 B.pdf 导入到 C.pdf 的页面。这个问题的解决方案可以在“iText in Action - Second Edition”的第 7 章中找到。下面我为您提供相应 Java 和 C# 示例的链接。

Java: http: //itextpdf.com/examples/iia.php ?id=133

C#: http: //kuujinbo.info/iTextInAction2Ed/index.aspx ?ch=Chapter07&ex=ConcatenateNamedDestinations

关键方法是 MakeRemoteNamedDestinationsLocal。这会将最初从 A.pdf 指向 B.pdf 的远程链接更改为 C.pdf 内的本地链接。这是比较专业的问题。如果您没有成功使用这些示例,那么将很难在 Stackoverflow 等论坛上解释该做什么。

于 2012-11-29T07:27:47.623 回答