2012-05-30 1 views
5

voglio clonare un pdf, e apportare lievi modifiche al documento ad un certo punto, durante o dopo la copia.facendo due file PDF utilizzando identici iTextSharp

sono riuscito a farlo con le pagine, ma sto cercando di copiare anche tutti i metadati, i campi del modulo, ecc acrofields

Come sarò in grado di farlo utilizzando 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

probabilmente un commento stupido, ma che ne dici di copiare semplicemente il file pdf? – granaker

+0

heh .. no voglio apportare lievi modifiche al documento. – alexandertr

+5

Bene, non è possibile copiare il file, quindi apportare modifiche ad esso (ad esempio http://stackoverflow.com/questions/4508120/adding-text-to-existing-pdf-which-is-closed-using-itextsharp) ? –

risposta

0

Non è possibile eseguire copie a byte identici con iTextSharp. È possibile creare copie identiche con System.IO.File.Copy.

si sono quindi liberi di aprirlo con iTextSharp per effettuare ulteriori regolazioni alla copia.

0

si utilizza una soluzione basata PdfCopy.

Per l'attività, tuttavia, vale a dire prendere un singolo PDF e applicare alcune modifiche ad esso, la soluzione appropriata è basata su PdfStamper. Sarebbe come questo:

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();