h724
15-05-2007, 12:32
ciao a tutti,
ho un problema nel concatenare più file pdf.
Se parto da piu' file già esistenti nn ho problemi (utilizzo le librerie com.lowagie.text.*) e tutto funziona.
Devo però realizzare al volo i vari pdf (con template diversi tra loro) e unirli man mano o alla fine, senza poggiarmi sull'hd.
Ecco quello che faccio:
int pageOffset = 0;
ArrayList master = new ArrayList();
int f = 0;
Document document = null;
PdfCopy writer = null;
for(int i=0;i<liber.length;i++){
PdfReader reader2 = new PdfReader(templatePath);
PdfStamper stamp2 = new PdfStamper(reader2, output);
reader2.consolidateNamedDestinations();
AcroFields form = stamp2.getAcroFields();
form.setField("test", "ciao");
form.setField("cod", libri.codice);
stamp2.setFormFlattening(true);
stamp2.close();
int n = reader2.getNumberOfPages();
List bookmarks = SimpleBookmark.getBookmark(reader2);
if (bookmarks != null) {
if (pageOffset != 0)
SimpleBookmark.shiftPageNumbers(bookmarks, pageOffset, null);
master.addAll(bookmarks);
}
pageOffset += n;
if (f == 0) {
document = new Document(reader2.getPageSizeWithRotation(1));
writer = new PdfCopy(document, new FileOutputStream("c:\\5.pdf"));
document.open();
}
PdfImportedPage page;
for (int ix = 0; ix < n; ) {
++ix;
page = writer.getImportedPage(reader2, ix);
writer.addPage(page);
}
PRAcroForm form2 = reader2.getAcroForm();
if (form2 != null)
writer.copyAcroForm(reader2);
f++;
}
if (!master.isEmpty())
writer.setOutlines(master);
document.close();
ottengo sempre l'errore da console: "CANNOT COPY type 0"
Potete aiutarmi? grazie
ho un problema nel concatenare più file pdf.
Se parto da piu' file già esistenti nn ho problemi (utilizzo le librerie com.lowagie.text.*) e tutto funziona.
Devo però realizzare al volo i vari pdf (con template diversi tra loro) e unirli man mano o alla fine, senza poggiarmi sull'hd.
Ecco quello che faccio:
int pageOffset = 0;
ArrayList master = new ArrayList();
int f = 0;
Document document = null;
PdfCopy writer = null;
for(int i=0;i<liber.length;i++){
PdfReader reader2 = new PdfReader(templatePath);
PdfStamper stamp2 = new PdfStamper(reader2, output);
reader2.consolidateNamedDestinations();
AcroFields form = stamp2.getAcroFields();
form.setField("test", "ciao");
form.setField("cod", libri.codice);
stamp2.setFormFlattening(true);
stamp2.close();
int n = reader2.getNumberOfPages();
List bookmarks = SimpleBookmark.getBookmark(reader2);
if (bookmarks != null) {
if (pageOffset != 0)
SimpleBookmark.shiftPageNumbers(bookmarks, pageOffset, null);
master.addAll(bookmarks);
}
pageOffset += n;
if (f == 0) {
document = new Document(reader2.getPageSizeWithRotation(1));
writer = new PdfCopy(document, new FileOutputStream("c:\\5.pdf"));
document.open();
}
PdfImportedPage page;
for (int ix = 0; ix < n; ) {
++ix;
page = writer.getImportedPage(reader2, ix);
writer.addPage(page);
}
PRAcroForm form2 = reader2.getAcroForm();
if (form2 != null)
writer.copyAcroForm(reader2);
f++;
}
if (!master.isEmpty())
writer.setOutlines(master);
document.close();
ottengo sempre l'errore da console: "CANNOT COPY type 0"
Potete aiutarmi? grazie