iTextSharp:从另一个PDF复制PDF内容时丢失了什么?

时间:2014-03-13 16:33:37

标签: pdf itextsharp

我目前正在评估iTextSharp在项目中的潜在用途。我为实现目标而编写的代码是使用PDFCopy.GetImportedPage来复制现有PDF中的所有页面。我想知道的是,在复制像这样的PDF内容时,我需要注意哪些内容会从PDF和/或页面丢失?例如,我已经注意到的一件事是我需要手动将任何书签和命名目的地添加到我的新PDF中。

这是一些粗略的示例代码:

        using (PdfReader reader = new PdfReader(inputFilename))
        {
            using (MemoryStream ms = new MemoryStream())
            {
                using (Document document = new Document())
                {
                    using (PdfCopy copy = new PdfCopy(document, ms))
                    {
                        document.Open();

                        int n;
                        n = reader.NumberOfPages;
                        for (int page = 0; page < n; )
                        {
                            copy.AddPage(copy.GetImportedPage(reader, ++page));
                        }

                        // add content and make further modifications here
                    }
                }

                // write the content to disk
            }
        }

1 个答案:

答案 0 :(得分:5)

基本上任何文档级别而不是页面级别的内容都会丢失,并且书签和目标都是文档级别的。拉出PDF spec并查看3.6.1节,了解文档目录中的其他条目,包括线程,打开和附加操作以及元数据。

您可能已经看过这些内容,但这里有一些示例(在Java中)有关如何merge Named Destinations以及如何merge Bookmarks的内容。