Estamos utilizando itextsharp para crear un único PDF a partir de múltiples archivos PDF. ¿Cómo inserto una página nueva en un archivo PDF que ya tiene varias páginas en el archivo? Cuando uso Agregar página está sobreescribiendo las páginas existentes y solo guarda la página 1 que fue seleccionada.Insertar página en PDF existente usando itextsharp
Aquí está el código que estoy usando para añadir la página a la PDF existente:
PdfReader reader = new PdfReader(sourcePdfPath);
Document document = new Document(reader.GetPageSizeWithRotation(1));
PdfCopy pdfCopy = new PdfCopy(document, new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create));
MemoryStream memoryStream = new MemoryStream();
PdfWriter writer = PdfWriter.GetInstance(document, memoryStream);
document.AddDocListener(writer);
document.Open();
for (int p = 1; p <= reader.NumberOfPages; p++)
{
if (pagesToExtract.FindIndex(s => s == p) == -1) continue;
document.SetPageSize(reader.GetPageSize(p));
document.NewPage();
PdfContentByte cb = writer.DirectContent;
PdfImportedPage pageImport = writer.GetImportedPage(reader, p);
int rot = reader.GetPageRotation(p);
if (rot == 90 || rot == 270)
{
cb.AddTemplate(pageImport, 0, -1.0F, 1.0F, 0, 0, reader.GetPageSizeWithRotation(p).Height);
}
else
{
cb.AddTemplate(pageImport, 1.0F, 0, 0, 1.0F, 0, 0);
}
pdfCopy.AddPage(pageImport);
}
pdfCopy.Close();
Estoy tratando de obtener sólo ciertas páginas de un archivo PDF de origen y añadirlos a un archivo PDF existente. El único problema es que no lo está agregando al PDF existente, sino solo al escribirlo. –
@Rob: por alguna razón no obtuve eso de la pregunta original. ¿Podría reformularse su problema como una necesidad de combinar ciertas (incluidas todas) las páginas de los documentos fuente en un solo archivo? ¿Quiere decir que un PDF existente se convierte en una de esas fuentes con todas las páginas requeridas? –