Stiamo usando itextsharp per creare un singolo PDF da più file PDF. Come inserisco una nuova pagina in un file PDF che ha già più pagine nel file? Quando uso la pagina aggiungi, sovrascrive le pagine esistenti e salva solo la pagina 1 che è stata selezionata.Inserire la pagina nel PDF esistente utilizzando itextsharp
Ecco il codice che sto usando per aggiungere la pagina al PDF esistente:
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();
Sto cercando di ottenere solo alcune pagine da un PDF di origine e aggiungerli a un PDF esistente. L'unico problema è che non lo sta aggiungendo al PDF esistente ma solo sovrascrivendolo. –
@Rob: per qualche motivo non ho capito dalla domanda originale. Il problema può essere riformulato come esigenza di combinare alcune (comprese tutte) pagine dai documenti di origine in un singolo file? Significa che un PDF esistente diventa una di quelle fonti con tutte le pagine richieste? –