2012-05-30 32 views
5

Quiero clonar un pdf y realizar pequeños cambios en el documento en algún momento durante o después de la copia.Creación de dos PDF idénticos con iTextSharp

me las arreglé para hacer eso con las páginas, pero estoy tratando de copiar también todos los metadatos, campos de formulario, etc. acrofields

¿Cómo voy a ser capaz de hacer que el uso de 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

probablemente un comentario tonto, pero ¿qué tal si solo copiamos el archivo pdf? – granaker

+0

heh .. no, quiero hacer pequeños cambios en el documento. – alexandertr

+5

Bueno, no podría copiar el archivo, luego hacer cambios en él (por ejemplo, http://stackoverflow.com/questions/4508120/adding-text-to-existing-pdf-which-is-closed-using-itextsharp) ? –

Respuesta

0

No puede hacer copias de bytes idénticos con iTextSharp. Puede hacer copias idénticas con System.IO.File.Copy.

Puede abrirlo con iTextSharp para realizar ajustes adicionales en la copia.

0

Utiliza una solución basada en PdfCopy.

Sin embargo, para su tarea, es decir, para tomar un único PDF y aplicarle algunos cambios, la solución adecuada es PdfStamper. Eso se vería así:

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