Hallo zusammen,
ich habe folgendes Problem zu lösen:
Ich habe einen JFrame, von dessen Container ich die Inhalte der Komponenten (JPanel, JTextArea, etc.) mittels einer rekursiven Methode herauslesen und in eine PDF packen möchte.
Um diese Idee umzusetzen, habe ich nachfolgendes Arrangement zusammengehauen:
Es erscheint folgende Fehlermeldung:
usw. ...
Ich habe den Debugger laufen lassen und konnte dort erkennen, dass der PDF sehr wohl Paragraphs hinzugefügt werden. Scheinbar werden diese aber wieder überschrieben. Überhaupt muss ich gestehen, dass ich die Laufzeit der for-Schleife
nicht so recht verstanden habe. Zumal die Methode auf
springt, dann aber weiterläuft - ich hätte hier erwartet, dass Feierabend ist und die Methode beendet ist.
Lange Rede, kurzer Sinn:
Ich würde gerne den "document has no pages" Fehler verstehen und beseitigen lernen.
Danke und Gruß vorab
Stephan
ich habe folgendes Problem zu lösen:
Ich habe einen JFrame, von dessen Container ich die Inhalte der Komponenten (JPanel, JTextArea, etc.) mittels einer rekursiven Methode herauslesen und in eine PDF packen möchte.
Um diese Idee umzusetzen, habe ich nachfolgendes Arrangement zusammengehauen:
Java:
public Document componentOfContainer(Container c, Document document) {
try {
PdfWriter.getInstance(document,
new FileOutputStream("C:\\Users\\Desktop\\PDFJava.pdf"));
document.open();
for (Component components : c.getComponents()) {
if (components instanceof Container) {
componentOfContainer((Container) components, document);
}
if (components instanceof JTextField) {
String x = ((JTextField) components).getText();
document.add(new Paragraph(x));
} else if (components instanceof JComboBox) {
String x = ((JComboBox) components).getSelectedItem().toString();
document.add(new Paragraph(x));
} else if (components instanceof JLabel) {
String x = ((JLabel) components).getText();
document.add(new Paragraph(x));
}
}
}catch (DocumentException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return this.document;
}
public static void main(Container c) {
WritePdfCopy writePdfCopy = new WritePdfCopy();
writePdfCopy.componentOfContainer(c, writePdfCopy.document).close();
}
Java:
Exception in thread "AWT-EventQueue-0" ExceptionConverter: java.io.IOException: The document has no pages.
at com.itextpdf.text.pdf.PdfPages.writePageTree(PdfPages.java:113)
at com.itextpdf.text.pdf.PdfWriter.close(PdfWriter.java:1217)
at com.itextpdf.text.pdf.PdfDocument.close(PdfDocument.java:787)
at com.itextpdf.text.Document.close(Document.java:420)
at WritePdfCopy.main(WritePdfCopy.java:95)
Ich habe den Debugger laufen lassen und konnte dort erkennen, dass der PDF sehr wohl Paragraphs hinzugefügt werden. Scheinbar werden diese aber wieder überschrieben. Überhaupt muss ich gestehen, dass ich die Laufzeit der for-Schleife
Java:
for (Component components : c.getComponents())
Java:
return this.document;
Lange Rede, kurzer Sinn:
Ich würde gerne den "document has no pages" Fehler verstehen und beseitigen lernen.
Danke und Gruß vorab
Stephan
Zuletzt bearbeitet: