PDF lesen funktioniert bei bestimmten Dateien nicht mit pdfview

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:
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!
 
B

blandest

Gast
Danke für deine Antwort, maki!

Weisst du vielleicht alternative (Freeware) Bibliotheken die ich nutzen kann um PDFs in Images umzuwandeln?
 
B

blandest

Gast
Hallo Xeter,

hab mir einmal PDFBox zu Gemüte geführt. Viel Dokumentation oder Beispiele findet man dazu leider nicht :-(
Hab's aber soweit geschafft, dass ich ein PDF einlesen und dann in ein Bild konvertieren kann. Leider auch nicht mit vollem Erfolg. Ab und zu werden Grafiken gar nicht ins Bildformat konvertiert oder machmal kommt folgende Exception und es werden gewisse Zeilen nur komplett schwarz dargestellt.

WARN [PDColorState] Unable to create the color instance [255.0, 255.0, 255.0] in color space DeviceRGB{ }; using black instead
java.lang.IllegalArgumentException: Color parameter outside of expected range: Red Green Blue
at java.awt.Color.testColorValueRange(Color.java:285)
at java.awt.Color.<init>(Color.java:369)
at java.awt.Color.<init>(Color.java:344)
at java.awt.Color.<init>(Color.java:435)
at org.apache.pdfbox.pdmodel.graphics.color.PDColorState.createColor(PDColorState.java:134)
at org.apache.pdfbox.pdmodel.graphics.color.PDColorState.getJavaColor(PDColorState.java:113)
at org.apache.pdfbox.pdfviewer.PageDrawer.fillPath(PageDrawer.java:269)
at org.apache.pdfbox.util.operator.pagedrawer.FillNonZeroRule.process(FillNonZeroRule.java:58)
at org.apache.pdfbox.util.PDFStreamEngine.processOperator(PDFStreamEngine.java:552)
at org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:248)
at org.apache.pdfbox.util.PDFStreamEngine.processStream(PDFStreamEngine.java:207)
at org.apache.pdfbox.pdfviewer.PageDrawer.drawPage(PageDrawer.java:106)
at org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java:698)
at org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java:669)
at at.bewag.utils.fileupload.NewFileUploadHelper.run(NewFileUploadHelper.java:61)
at java.lang.Thread.run(Thread.java:595)


Hab schon verschiedene Versionen von PDFBox ausprobiert (0.7.3, 0.8.0, 1.1.0), aber keine lieferte ein sauberes Ergebnis. Kann mir irgendjemand Tipps geben wie man einfach ein PDF in ein Image umwandelt ohne irgendwelche sonderbaren Nebeneffekte?! Bin für jeden Hinweis dankbar!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R 11 GB File lesen ohne zu extrahieren Filedaten Bereich für Bereich adressieren dann mit Multi-Thread id die DB importieren Allgemeine Java-Themen 3
G Dateien lesen Allgemeine Java-Themen 3
OnDemand Excel lesen wie CSV Allgemeine Java-Themen 7
S Textdatei statt von Dateisystem aus .jar lesen Allgemeine Java-Themen 3
oskarS85 GeoTiff NDVI pixelweise lesen Allgemeine Java-Themen 2
R Lesen von Interfaces (Programm Vervollständigen) Allgemeine Java-Themen 10
OnDemand CSV lesen flexible Spalten Allgemeine Java-Themen 3
E Datentypen Wie kann ich die Längen der unterschiedlichen Ebenen aus einem Objekt lesen von dem ich weiß, dass es ein mehrdimensionaler Array ist? Allgemeine Java-Themen 3
S File lesen und schreiben Java 6 Allgemeine Java-Themen 2
J Die Letzte Zahl aus einer Text datei lesen Allgemeine Java-Themen 8
L Input/Output Kassenzettel lesen aus einem Bild Allgemeine Java-Themen 2
M Daten aus MatLab Datei lesen Allgemeine Java-Themen 8
G Excel Tabelle lesen und in neue Excel Tabelle einfügen Allgemeine Java-Themen 11
J File in Package erstellen & lesen mit Programmstart in externe Projekt Allgemeine Java-Themen 3
A File lesen Codierung Charset Allgemeine Java-Themen 5
E Socket Dynamische Klasse von ObjectOutputStream lesen. Allgemeine Java-Themen 8
D Mit Java PHP hashmap lesen Allgemeine Java-Themen 1
B Quellcode lesen - Aussortieren Allgemeine Java-Themen 3
A Steuerung von Spiel aus Datei lesen Allgemeine Java-Themen 0
F Best Practice Große Anzahl an Objekten speichern und lesen Allgemeine Java-Themen 19
L CSV File lesen, in ArrayList speichern und ausgeben Allgemeine Java-Themen 3
S Eigenschaften (hier Verknüpfung) eines Files lesen Allgemeine Java-Themen 2
OnDemand Java Barcode lesen Allgemeine Java-Themen 4
F Json in sql speichern und lesen Allgemeine Java-Themen 10
K Classpath Alle Classen aus einem Package lesen Allgemeine Java-Themen 7
X NetBeans Bilder und andere Dateien ins .jar schreiben und wieder aus .jar lesen Allgemeine Java-Themen 6
K Bestimmten Bereich eines Strings lesen Allgemeine Java-Themen 6
H Input/Output .txt Datei in Jar lesen Allgemeine Java-Themen 6
F Lesen effizienter als schreiben? Allgemeine Java-Themen 4
RalleYTN REST API ResponseType application/pdf lesen Allgemeine Java-Themen 0
R Inputstream lesen mit Pointer Allgemeine Java-Themen 0
I Setzen und Lesen eines Objektes (Enum?) Allgemeine Java-Themen 10
javampir Input/Output Effizienz beim binären Lesen einer Datei Allgemeine Java-Themen 6
D Datentyp von Unbounded Wildcards lesen Allgemeine Java-Themen 2
J Text lesen und in Variablen speichern Allgemeine Java-Themen 3
B SMS von Vodafone Mobile Connest mit JAVA-Programm lesen Allgemeine Java-Themen 0
2 String Array in Datei schreiben und wieder davon lesen Allgemeine Java-Themen 2
A In Excel-Datei schreiben, Formeln der Mappe anwenden, Wert lesen Allgemeine Java-Themen 3
Thallius Dateien Zippen und wieder heraus lesen? Allgemeine Java-Themen 4
L Input/Output Datei in den Speicher lesen. Allgemeine Java-Themen 9
E Lesen von mehrere Csv-Datei und ihre Inhalte vergleichen Allgemeine Java-Themen 3
F Java Bytecode lesen Allgemeine Java-Themen 5
W Schreiben/Lesen aus RS232 / jssc Allgemeine Java-Themen 0
L Input/Output Datei lesen Allgemeine Java-Themen 1
H Mehrere Bilder aus einer Datei lesen Allgemeine Java-Themen 2
OnDemand Lesen aus Properties Allgemeine Java-Themen 7
S XML lesen, verarbeiten, speichern klappt in Eclipse, aber nicht in der JAR Allgemeine Java-Themen 4
N Content von URL lesen Allgemeine Java-Themen 18
T UTF-16LE String aus LDAP lesen und als ISO-8859-1 in DB speichern? Allgemeine Java-Themen 2
J Bytes aus Socket lesen Allgemeine Java-Themen 9
M Aus Excel Tabelle lesen und Werte in Array speichern Allgemeine Java-Themen 15
W Passwortgeschuetzte .mpp Datei mit MPXJ lesen Allgemeine Java-Themen 3
O BufferedReader von ganz unten anfangen zu lesen Allgemeine Java-Themen 7
G Binäre Datei lesen / schreiben Allgemeine Java-Themen 9
E Apache POI-Datei lesen und umschreiben Allgemeine Java-Themen 8
T Welches Tuturial soll ich paralell lesen ? Allgemeine Java-Themen 3
T Datei lesen, bearbeiten, speichern Allgemeine Java-Themen 14
T Kann HTML Datei nicht lesen Allgemeine Java-Themen 3
S Die Zeile die JUnit gerade ausführt lesen Allgemeine Java-Themen 15
A nur einen Wert aus einer .conf lesen und erneuern Allgemeine Java-Themen 3
H Input/Output InputStream: 32-Bit-Ganzzahl (DWORD) binär lesen Allgemeine Java-Themen 5
B Hex aus .txt lesen Allgemeine Java-Themen 8
C Datentypen von string in ein array lesen Allgemeine Java-Themen 4
C aus einem String einzelne Hex Werte lesen Allgemeine Java-Themen 7
D Ausgabe von C# Konsolenanwendung lesen Allgemeine Java-Themen 5
F CSV-Datei aus Internet lesen Allgemeine Java-Themen 2
P ObjectInputStream kann nicht vernünftig lesen... Allgemeine Java-Themen 9
R Datei zeilenweise lesen und schreiben Allgemeine Java-Themen 6
0 Datein aus laufender Jar lesen und bearbeiten Allgemeine Java-Themen 10
S Dateien aus src-Ordner lesen Allgemeine Java-Themen 3
F hex-farbwert der pixel aus bildern lesen Allgemeine Java-Themen 4
L Wikipedia Artikel lesen Allgemeine Java-Themen 16
J HSSF - schreiben in und lesen aus vorhandener Datei Allgemeine Java-Themen 6
R Properties Datei aus Applikationsverzeichnis lesen Allgemeine Java-Themen 5
J xlsx Dateien lesen OHNE apache POI Allgemeine Java-Themen 6
C Property-File lesen und schreiben Allgemeine Java-Themen 20
M Binäre Datei schreiben und lesen Allgemeine Java-Themen 4
N Problem beim lesen einer File in JAR-File Allgemeine Java-Themen 3
D Datei lesen ohne sie für umbenennen/verschieben zu sperren Allgemeine Java-Themen 13
reibi Sicher ein File lesen Allgemeine Java-Themen 28
R Java lesen von Dateien, Little-Endian Allgemeine Java-Themen 2
N Performates lesen von Objekten aus Dateien Allgemeine Java-Themen 2
T Integer aus InputStream lesen Allgemeine Java-Themen 3
C Alle Klassen eines Packages lesen und instanzieren? Allgemeine Java-Themen 9
D Probleme beim schreiben / lesen in TreeMap Allgemeine Java-Themen 9
D (Viele) Daten performant speichern und lesen Allgemeine Java-Themen 5
TiME-SPLiNTER Unbekannte Anzahl serialisierter Objekte lesen Allgemeine Java-Themen 2
brunothg Iso lesen Allgemeine Java-Themen 2
C Markierung durch Maus lesen Allgemeine Java-Themen 9
nrg JDOM Tabelle lesen Allgemeine Java-Themen 6
P Datei in einen String lesen Probleme bei Codierung Allgemeine Java-Themen 2
L Grafik lesen Allgemeine Java-Themen 2
P Mime Type aus Stream lesen Allgemeine Java-Themen 5
H POI Excel lesen und schreiben Allgemeine Java-Themen 10
Iron Monkey Object in Datei effizienter lesen / schreiben Allgemeine Java-Themen 13
L Lesen von Objekten aus Datei Allgemeine Java-Themen 17
M PCL Stream lesen und schreiben Allgemeine Java-Themen 6
U Java file aus Classpath lesen Allgemeine Java-Themen 1
L Applet Verzeichnis lesen Allgemeine Java-Themen 3
R InputStream zweimal lesen Allgemeine Java-Themen 2

Ähnliche Java Themen


Oben