使用iTextSharp制作两个相同的PDF

时间:2012-05-30 11:47:37

标签: c# pdf itext

我想克隆一个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);

2 个答案:

答案 0 :(得分:0)

您无法使用iTextSharp制作相同字节的副本。您可以使用System.IO.File.Copy创建相同的副本。

然后您可以使用iTextSharp自由打开它以进一步调整副本。

答案 1 :(得分: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();