Hallo auch...
ich habe ein kleines Problem, und zwar versuche ich mit iText ein PDF zu öffnen, in eine bestimmte Zone Text einzufügen und das ganze speichern. An sich hört sich das ja nach wenig an, ist es womöglich auch, nur beiß ich mir daran die Zähne aus. Die Idee dabei ist, dass ich ein Layer auf die betroffene Zone lege und da den Text reinschreibe. So etwas in der Art passiert wohl auch, dass sich die Größe der Dateien unterscheidet, nur seh ich nicht den Text den ich einfügen wollte.
Ich zeig mal den Code in der Hoffnung dass jemand den Fehler findet, und wenn ich komplett auf dem Holzweg bin, lass ich mir gerne helfen.
Und um der Frage "warum itext?" zuvorzukommen..... weil ich damit weiter gekommen bin als mit jpedal...Das Thema "PDF und Java" beschäftigt mich genau seit heute...
ich habe ein kleines Problem, und zwar versuche ich mit iText ein PDF zu öffnen, in eine bestimmte Zone Text einzufügen und das ganze speichern. An sich hört sich das ja nach wenig an, ist es womöglich auch, nur beiß ich mir daran die Zähne aus. Die Idee dabei ist, dass ich ein Layer auf die betroffene Zone lege und da den Text reinschreibe. So etwas in der Art passiert wohl auch, dass sich die Größe der Dateien unterscheidet, nur seh ich nicht den Text den ich einfügen wollte.
Ich zeig mal den Code in der Hoffnung dass jemand den Fehler findet, und wenn ich komplett auf dem Holzweg bin, lass ich mir gerne helfen.
Und um der Frage "warum itext?" zuvorzukommen..... weil ich damit weiter gekommen bin als mit jpedal...Das Thema "PDF und Java" beschäftigt mich genau seit heute...
Code:
public void copy(String outfile, String infile)
{
System.out.println("PdfCopy example");
Document document = null;
try
{
int pageOffset = 0;
ArrayList master = new ArrayList();
PdfCopy writer = null;
PdfReader reader = new PdfReader(infile);
reader.consolidateNamedDestinations();
int n = reader.getNumberOfPages();
List bookmarks = SimpleBookmark.getBookmark(reader);
if (bookmarks != null)
{
if (pageOffset != 0)
SimpleBookmark.shiftPageNumbers(bookmarks, pageOffset, null);
master.addAll(bookmarks);
}
pageOffset += n;
document = new Document(reader.getPageSizeWithRotation(1));
writer = new PdfCopy(document, new FileOutputStream(outfile));
document.open();
PdfImportedPage page;
for (int i = 0; i < n; )
{
++i;
page = writer.getImportedPage(reader, i);
writer.addPage(page);
}
PRAcroForm form = reader.getAcroForm();
if (form != null)
writer.copyAcroForm(reader);
writer.setPdfVersion(PdfWriter.VERSION_1_5);
writer.setViewerPreferences(PdfWriter.PageModeUseOC);
PdfContentByte cb = writer.getDirectContent();
Phrase explanation = new Phrase("Layer grouping", new Font(
Font.HELVETICA, 20, Font.BOLD, Color.red));
ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, explanation, 50,
650, 0);
PdfLayer layer = new PdfLayer("Layer", writer);
Phrase p1 = new Phrase("Irgendwo sollte nun etwas stehen");
System.out.println("tut es aber nicht");
cb.beginLayer(layer);
ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, p1, 50, 600, 0);
cb.endLayer();
PdfOCProperties p = writer.getOCProperties();
PdfArray order = new PdfArray();
order.add(layer.getRef());
PdfDictionary d = new PdfDictionary();
d.put(PdfName.ORDER, order);
p.put(PdfName.D, d);
}
catch(DocumentException de)
{
System.err.println(de.getMessage());
}
catch(IOException ioe)
{
System.err.println(ioe.getMessage());
}
document.close();
}