2017-10-30 1 views
0

Ich habe versucht, dieses Problem für eine Weile zu lösen. Ich habe die neueste PDFBox (2.0.7) und FontBox (2.0.7) für mein Programm, und egal, was ich mache, bekomme ich den gleichen Kompilierungsfehler.Pdfbox - Kann kein Symbol für PDType0Font.load finden

Innerhalb dieser Klasse, hier sind meine relevanten Importe:

import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.pdmodel.PDPage; 
import org.apache.pdfbox.pdmodel.PDPageContentStream; 
import org.apache.pdfbox.pdmodel.font.PDFont; 
import org.apache.pdfbox.pdmodel.font.PDTrueTypeFont; 
import org.apache.pdfbox.pdmodel.font.PDType0Font; 
import org.apache.pdfbox.pdmodel.font.PDType1Font; 
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; 
import org.apache.pdfbox.pdmodel.common.PDRectangle; 

Ich versuche, die Schriftart mit dem folgenden Beispiel zu setzen:

PDDocument pdfDoc = new PDDocument(); 
PDPage page = new PDPage(); 
pdfDoc.addPage(page); 

PDPageContentStream contents = new PDPageContentStream(pdfDoc, page); 
PDFont font = PDType0Font.load(pdfDoc, new File("/path/to/font/Roboto-Regular.ttf")); 
contents.setFont(font, 20); 

Leider, wie ich gesagt habe, erhalte ich die folgenden Kompilierungsfehler jedes Mal: ​​

error: cannot find symbol 
PDFont font = PDType0Font.load(pdfDoc, new File("/path/to/font/Roboto-Regular.ttf")); 
symbol: method load(PDDocument,File) 
location: class PDType0Font 

Ich habe die Javadocs multip betrachtet Le mal, ich habe die JAR-Datei geöffnet, um zu bestätigen, dass diese Methode da ist (es ist), und ich habe andere Dinge ausprobiert, wie zum Beispiel die "Schriftart" als eine Instanz von PDType0Font anstelle der Schnittstelle PDFont zu initialisieren. Derselbe Fehler. Ich habe versucht, jedes einzelne JAR zu importieren, das die Website für 2.0.7 anbietet. (Preflight, xmpbox, pdfbox-tools, pdfbox-debugger) und ich bekomme immer noch den gleichen Fehler. Ich habe versucht, jede einzelne Klasse aus den Paketen pdmodel und pdmodel.font zu importieren. Derselbe Fehler. Alles andere funktioniert gut - es ist nur diese eine bestimmte Methode. Anfangs hatte ich PDTrueTypeFont anstelle von PDType0Font verwendet und es war in Ordnung. Aber ich muss aufgrund von fremden Zeichen zu PDType0Font wechseln.

BEARBEITEN: Gelöst. Es stellt sich heraus, dass ein veraltetes Tika-JAR in meinem Klassenpfad einen Konflikt verursacht hat und PDFBox auf Version 1.8.13 zurückgesetzt hat.

+0

Problem nur in der Umgebung, die Sie verwenden könnten? Welches Projektbausystem verwenden Sie? Können Sie das gesamte Beispielprojekt anfügen, das das Problem reproduziert? –

+1

Vielleicht ein unsichtbarer Tippfehler? Versuchen Sie, diese Codezeile erneut einzugeben. Eine andere Möglichkeit ist, dass Sie eine veraltete oder kaputte pdfbox-Bibliothek in Ihrem Klassenpfad haben ... versuchen Sie, sie zu löschen und erneut zu laden, oder wenn Sie maven verwenden, löschen Sie Ihr Repository; Starten Sie ein neues Projekt in Ihrer IDE; Löschen Sie den Cache Ihrer IDE. –

+0

Btw Ich spreche aus Erfahrung ... Ich hatte das mit Netbeans passieren. Löschen des Netbeans-Cache hat geholfen. –

Antwort

1

Dieses Problem wurde behoben. Es stellt sich heraus, dass es einen Konflikt in meinem Klassenpfad gab. Ich hatte eine sehr veraltete Tika JAR, die PDFBox 1.8 enthielt, also habe ich Tika auf die neueste Version aktualisiert und habe keine Probleme mehr. Vielen Dank an Tilman Hausherr, der die Lösung vorgeschlagen hat.

Könnte es sein, dass es in Ihrem Klassenpfad eine alte .jar-Datei gibt? Versuchen Sie, die Ausnahme e = new COSVisitorException (new Exception()) hinzuzufügen. Wenn das man arbeitet, dann bedeutet es, Ihnen eine 1.8-Version in Ihrem Classpath haben (und sollten nicht!)

Pdfbox - Cannot find symbol for PDType0Font.load

Verwandte Themen