B
blandest
Gast
Hallo zusammen!
Ich habe ein Problem bein einlesen von PDF-Dateien in meinem Programm. Bestimmte PDF-Dateien machen Probleme und werfen eine Exception beim Aufruf der Methode PDFFile.getPage(i, true);
Hier die Exception:
15:21:51,208 ERROR [STDERR] java.lang.NullPointerException
15:21:51,208 ERROR [STDERR] at com.sun.pdfview.font.PDFFontDescriptor.<init>(PDFFontDescriptor.java:107)
15:21:51,208 ERROR [STDERR] at com.sun.pdfview.font.PDFFont.getFont(PDFFont.java:137)
15:21:51,208 ERROR [STDERR] at com.sun.pdfview.PDFParser.getFontFrom(PDFParser.java:1172)
15:21:51,208 ERROR [STDERR] at com.sun.pdfview.PDFParser.iterate(PDFParser.java:726)
15:21:51,208 ERROR [STDERR] at com.sun.pdfview.BaseWatchable.run(BaseWatchable.java:101)
15:21:51,208 ERROR [STDERR] at com.sun.pdfview.BaseWatchable.execute(BaseWatchable.java:263)
15:21:51,208 ERROR [STDERR] at com.sun.pdfview.BaseWatchable.go(BaseWatchable.java:197)
15:21:51,208 ERROR [STDERR] at com.sun.pdfview.PDFFile.getPage(PDFFile.java:1344)
15:21:51,208 ERROR [STDERR] at at.bewag.utils.fileupload.NewFileUploadHelper.run(NewFileUploadHelper.java:92)
15:21:51,208 ERROR [STDERR] at java.lang.Thread.run(Thread.java:595)
Im Prinzip möchte ich nichts anderes machen als eine PDF-Datei einlesen in eine JPG-Datei umwandeln und abspeichern. Bei vielen PDF-Dateien funktioniert mein Coding einwandfrei und bei einigen wird die Exception geworfen und in weiterer Folge dadurch nur ein komplett weißes Bild erstellt.
Hier die entsprechende Codestelle:
Vielleicht kann mir ja jemand weiterhelfen! Vielen Dank schon mal im vorhinein!
Ich habe ein Problem bein einlesen von PDF-Dateien in meinem Programm. Bestimmte PDF-Dateien machen Probleme und werfen eine Exception beim Aufruf der Methode PDFFile.getPage(i, true);
Hier die Exception:
15:21:51,208 ERROR [STDERR] java.lang.NullPointerException
15:21:51,208 ERROR [STDERR] at com.sun.pdfview.font.PDFFontDescriptor.<init>(PDFFontDescriptor.java:107)
15:21:51,208 ERROR [STDERR] at com.sun.pdfview.font.PDFFont.getFont(PDFFont.java:137)
15:21:51,208 ERROR [STDERR] at com.sun.pdfview.PDFParser.getFontFrom(PDFParser.java:1172)
15:21:51,208 ERROR [STDERR] at com.sun.pdfview.PDFParser.iterate(PDFParser.java:726)
15:21:51,208 ERROR [STDERR] at com.sun.pdfview.BaseWatchable.run(BaseWatchable.java:101)
15:21:51,208 ERROR [STDERR] at com.sun.pdfview.BaseWatchable.execute(BaseWatchable.java:263)
15:21:51,208 ERROR [STDERR] at com.sun.pdfview.BaseWatchable.go(BaseWatchable.java:197)
15:21:51,208 ERROR [STDERR] at com.sun.pdfview.PDFFile.getPage(PDFFile.java:1344)
15:21:51,208 ERROR [STDERR] at at.bewag.utils.fileupload.NewFileUploadHelper.run(NewFileUploadHelper.java:92)
15:21:51,208 ERROR [STDERR] at java.lang.Thread.run(Thread.java:595)
Im Prinzip möchte ich nichts anderes machen als eine PDF-Datei einlesen in eine JPG-Datei umwandeln und abspeichern. Bei vielen PDF-Dateien funktioniert mein Coding einwandfrei und bei einigen wird die Exception geworfen und in weiterer Folge dadurch nur ein komplett weißes Bild erstellt.
Hier die entsprechende Codestelle:
Java:
PdfReader reader = new PdfReader(item.getFile().getAbsolutePath());
Document document = new Document(reader.getPageSize(1));
ByteArrayOutputStream bos = new ByteArrayOutputStream();
PdfCopy copy = new PdfCopy(document, bos);
copy.setPdfVersion(PdfCopy.PDF_VERSION_1_4);
document.open();
for (int i = 1; i <= reader.getNumberOfPages(); i++)
{
PdfImportedPage page = copy.getImportedPage(reader, i);
copy.addPage(page);
}
document.close();
// Konvertierung zu Bildern
RandomAccessFileOrArray raf = new RandomAccessFileOrArray(bos.toByteArray());
ByteBuffer buf = raf.getNioByteBuffer();
PDFFile pdffile = new PDFFile(buf);
UploadFile upFile = new UploadFile();
upFile.setName(item.getFileName().substring(0, item.getFileName().indexOf('.') + 1) + format);
// Begin mit dem Erstellen der Bilder, pro Seite ein Bild
int num = pdffile.getNumPages();
for (int i = 1; i <= num; i++)
{
PDFPage page = pdffile.getPage(i, true);
// Höhe und Breite der Seite ermitteln
int width = (int) page.getBBox().getWidth();
int height = (int) page.getBBox().getHeight();
Rectangle rect = new Rectangle(0, 0, width, height);
// Bild erstellen
BufferedImage img = new BufferedImage(rect.width, rect.height, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = (Graphics2D)img.getGraphics();
g2d.translate(0, 0);
PDFRenderer pdfr = new PDFRenderer(page, g2d, rect, null, Color.WHITE);
try
{
page.waitForFinish ( );
pdfr.run ( );
}
catch ( InterruptedException ie ) {
// nothing to do
}
ByteArrayOutputStream imgBos = new ByteArrayOutputStream();
ImageIO.write(img, format, imgBos);
// File zur Liste hinzufügen
upFile.addData(eliminateVulnarabilities(imgBos.toByteArray(), format)); //
try{
imgBos.close();
bos.close();
} catch(Exception e){}
}
Vielleicht kann mir ja jemand weiterhelfen! Vielen Dank schon mal im vorhinein!