2012-05-30 43 views
5

我想克隆pdf,並在複製過程中或複製後的某個時候對文檔進行輕微更改。使用iTextSharp製作兩個完全相同的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); 
+12

可能是一個愚蠢的評論,但如何複製PDF文件? – granaker

+0

heh ..不,我想對文檔做些微的修改。 – alexandertr

+5

好吧,難道你不能複製該文件,然後進行更改(例如http://stackoverflow.com/questions/4508120/adding-text-to-existing-pdf-which-is-closed-using-itextsharp) ? –

回答

0

您無法使用iTextSharp製作相同字節的副本。您可以使用System.IO.File.Copy製作相同的副本。

然後您可以隨意使用iTextSharp將其打開以進一步調整副本。

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(); 
相關問題