C# 使用iTextSharp制作两个相同的PDF

C# 使用iTextSharp制作两个相同的PDF,c#,pdf,itext,C#,Pdf,Itext,我想克隆一个pdf,并在复制过程中或复制后的某个时间对文档进行轻微更改 我设法做到了这一点,但我试图复制所有的元数据,表单字段,字段等 我将如何使用iTextSharp做到这一点 Document document = new Document(); FileStream fs = new FileStream(OutputFile, FileMode.Create, FileAccess.Write, FileShare.None) PdfCopy copy = new PdfCopy(do

我想克隆一个pdf,并在复制过程中或复制后的某个时间对文档进行轻微更改

我设法做到了这一点,但我试图复制所有的元数据,表单字段,字段等

我将如何使用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);
Document Document=新文档();
FileStream fs=newfilestream(OutputFile、FileMode.Create、FileAccess.Write、FileShare.None)
PdfCopy副本=新的PdfCopy(文件,fs);
document.Open();

对于(int i=1;i您不能使用iTextSharp创建相同的字节副本。您可以使用System.IO.File.Copy创建相同的副本


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

您可以使用基于
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();

可能是一个愚蠢的评论,但是复制pdf文件怎么样?呵呵..不,我想对文档做一些轻微的更改。那么,你不能复制文件,然后对其进行更改吗(例如)?