2010-05-16 7 views
24

Ich bin auf der Suche nach einer Java-Bibliothek, die ein PDF aufnehmen und ein Miniaturbild (PNG) von der ersten Seite erstellen kann.Erstellen Sie ein Vorschaubild für PDF in Java

Ich habe JPedal bereits angeschaut, aber seine wahnsinnige Lizenzgebühr ist absolut prohibitiv. Ich benutze iText, um PDF-Dateien im Moment zu manipulieren, aber ich glaube, es macht keine Vorschaubilder. Ich kann etwas wie Ghostscript in der Befehlszeile verwenden, aber ich hoffe, dass ich mein Projekt möglichst in Java belasse.

+0

Siehe, ob [jPod] (http://sourceforge.net/projects/jpodlib/) kann das tun, ich wette, es kann. (Keine Antwort, da es nur ein Vorschlag ist.) – doublep

+0

Jetzt jPod ansehen. Ich würde eine Open-Source-Lösung bevorzugen, wenn möglich, denke ich. Selbst 99 Euro sind zu viel, um es auszugeben, wenn ich es vermeiden kann. Kann nicht leicht eine API dafür finden, entweder. –

+0

Nun, hmm, das letzte Mal, als ich jPod heruntergeladen habe, war es kostenlos. Ich denke, ich muss überprüfen, was passiert ist ... – doublep

Antwort

21

PDF Renderer ist eine LGPL pure-Java-Bibliothek, die dies so einfach macht wie (aus ihrem Beispiel Seite):

File file = new File("test.pdf"); 
RandomAccessFile raf = new RandomAccessFile(file, "r"); 
FileChannel channel = raf.getChannel(); 
ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size()); 
PDFFile pdffile = new PDFFile(buf); 

// draw the first page to an image 
PDFPage page = pdffile.getPage(0); 

//get the width and height for the doc at the default zoom 
Rectangle rect = new Rectangle(0,0, 
       (int)page.getBBox().getWidth(), 
       (int)page.getBBox().getHeight()); 

//generate the image 
Image img = page.getImage(
       rect.width, rect.height, //width & height 
       rect, // clip rect 
       null, // null for the ImageObserver 
       true, // fill background with white 
       true // block until drawing is done 
       ); 
+0

Wow, das sieht definitiv so aus, wie ich es brauche. Ich werde es versuchen und melden. –

+0

Wie speichere ich dieses Image-Objekt auf der Festplatte? –

+1

'ImageIO.write (image," png ", Datei);' – FRotthowe

5

PDF Renderer ist so lange in Ordnung, da Sie nur die Teilmenge von PDF-Dateien verwenden sie benutzen. Mit JPod und JPedal bezahlen Sie für eine aktive und entwickelte Bibliothek kein totes Projekt.

+0

Meine Lösung muss mit beliebigen PDF-Dateien arbeiten. Kannst du mehr erklären "nur die Teilmenge [PDF Render] verwendet"? Re: JPedal, ich habe es schon wegen seiner lächerlichen Kosten entlassen; re: JPod, ich bin mir immer noch nicht sicher, ob es tun wird, was ich oben brauche. –

+0

PDF Renderer unterstützt keine komprimierten Objekte und eine Reihe anderer Funktionen in einer großen Anzahl aktueller PDFs. –

+0

+1 vielen Dank für den Heads-Up –