5

我想克隆一个 pdf,并在复制期间或之后的某个时间点对文档进行细微更改。

我设法用页面做到了这一点,但我也在尝试复制所有元数据、表单字段、acrofields 等。

我将如何使用 iTextSharp 做到这一点?

Document document = new Document(); 
FileStream fs = new FileStream(OutputFile, FileMode.Create, FileAccess.Write, FileShare.None)
PdfCopy copy = new PdfCopy(document, fs);
document.Open();
for (int i = 1; i <= reader.NumberOfPages; i++)
{
    PdfImportedPage importedPage = copy.GetImportedPage(reader, i);
    copy.AddPage(importedPage);
}
copy.Outlines = SimpleBookmark.GetBookmark(reader);                

fs.Flush();

PdfCopyFields copyf = new PdfCopyFields(fs);
4

2 回答 2

0

您不能使用 iTextSharp 制作相同字节的副本。您可以使用 System.IO.File.Copy 制作相同的副本。

然后,您可以使用 iTextSharp 打开它以对副本进行进一步调整。

于 2015-01-23T03:31:15.817 回答
0

您使用PdfCopy基于解决方案的解决方案。

但是,对于您的任务,即获取单个 PDF 并对其应用一些更改,需要适当的解决方案PdfStamper。看起来像这样:

PdfReader reader = ...;
[...apply changes using PdfReader methods...]
FileStream fs = new FileStream(OutputFile, FileMode.Create, FileAccess.Write, FileShare.None)
PdfStamper stamper = new PdfStamper(reader, fs);
[...apply changes using PdfStamper methods...]
stamper.Close();
于 2017-09-11T15:09:07.907 回答