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