Sto usando iText (in particolare iTextSharp 4.1.6) e voglio creare un PDF combinando pagine da PDF esistenti ma anche inserendo nuove pagine create da un'immagine.iText - come aggiungere pagine a un documento creato con PdfCopy
Ho queste due parti che funzionano separatamente rispettivamente con PdfCopy e PdfWriter. Il codice per creare una pagina da un'immagine simile a questa:
PdfWriter pw = PdfWriter.GetInstance(doc, outputStream);
Image img = Image.GetInstance(inputStream);
doc.Add(img);
doc.NewPage();
Ora, dal momento PdfCopy eredita da PDFWriter, ho pensato di essere in grado di aggiungere queste "pagine di immagini" a mio oggetto PdfCopy utilizzando la stessa tecnica, ma non funziona (se istanziate un PdfCopy invece di un PdfWriter nell'esempio precedente, non appare nulla sulla pagina).
Da una rapida occhiata al codice sorgente, noto che quando il contstructor di PdfCopy chiama il costruttore della superclasse, lo fa con un nuovo oggetto Document, non con quello passato, quindi credo che questo sia il motivo.
C'è un modo migliore per andare su questo? Al momento la mia ipotesi migliore è quella di creare un Pdf a singola pagina dall'immagine usando PdfWriter e quindi aggiungerlo al documento usando PdfCopy, ma sembra un po 'una soluzione.
Quello che hai descritto come un lavoro intorno a me sembra una soluzione adeguata. PdfCopy è progettato per combinare più PDF e lo si applica ai file PDF già esistenti e al nuovo file creato. se l'immagine non è troppo grande, puoi creare quel PDF in memoria (byte []) e leggerlo da lì; quindi, non c'è nemmeno bisogno di ulteriori file temporanei. – mkl
Grazie - Non ho molta familiarità con iText e sembra così completo che non ero sicuro se ci fosse un altro modo per farlo. L'ho implementato creando il PDF temporaneo in memoria e tutto funziona benissimo :-) – Andy