1

下手な英語を許してください..)) 2 つの PDF ドキュメントがあります。どちらも197ページで構成されています。1 ~ 2 ページの最初の論文には、このドキュメントの他の (3 ~ 197) ページへのリンクがあります。これら 2 つのドキュメントを 197 ページの 1 つのドキュメントに結合する必要があります。• 3 ~ 197 ページ - 2 番目のドキュメントから。

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 から C.pdf にインポートされたページではなく、ドキュメント B.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 に答える