Hallo,
ich möchte mit pdfbox Fonts aus PDFs extrahieren und diese dann als Font für mein Panel verwenden. Also im PDF ist eine Font z.B Arial eingebettet, mittels Arial möchte ich einen String auf ein Panel legen.
Doch die Extraktion funktioniert einfach nicht und ich komme nicht mehr richtig weiter:
Diese Methode extrahiert mir die Chars aus dem PDF
Hier die Klasse für die Chars aus dem PDF (Konstruktor):
Die pdfbox Methode getFont() gibt mir ein PDFont Objekt zurück, ich caste es mittels (PDTruetypefont) (PDSimpleFont) zu einem PDTruetypeFont Objekt und würde mit pdttfont.getawtFont() ein Font Objekt erhalten.
Hiermit wird das Panel angezeigt
Ich erhalte immer folgende Meldung:
oder solche:
Wäre sehr dankbar wenn mir einer einen Denkanstoß geben könnte! Oder gibts auch andere Libraries die mir evtl helfen könnten?
Gruß
ich möchte mit pdfbox Fonts aus PDFs extrahieren und diese dann als Font für mein Panel verwenden. Also im PDF ist eine Font z.B Arial eingebettet, mittels Arial möchte ich einen String auf ein Panel legen.
Doch die Extraktion funktioniert einfach nicht und ich komme nicht mehr richtig weiter:
Diese Methode extrahiert mir die Chars aus dem PDF
Java:
protected void processTextPosition(TextPosition text) {
try {
allCharacters.add(new Chardetails(getIndex(), text.getCharacter().charAt(0), text.getXDirAdj(), text.getYDirAdj(), text.getFontSizeInPt(),
(PDTrueTypeFont) (PDSimpleFont) text.getFont(), text.getXScale(), text.getHeightDir(), text.getWidthOfSpace(), text.getWidth()));
} catch (IOException ex) {
System.out.println("Fehler: "+ ex.getMessage());
}
index++;
}
Hier die Klasse für die Chars aus dem PDF (Konstruktor):
Java:
public Chardetails(int index, char zeichen, float xdir, float ydir, float fontsize, PDTrueTypeFont pdttfont, double xscale, float height, float space, float width) throws IOException {
this.index = index;
this.zeichen = zeichen;
this.xdir = Math.round(xdir);
this.ydir = Math.round(ydir);
this.fontsize = fontsize;
this.font = pdttfont.getawtFont();
this.xscale = xscale;
this.height = height;
this.space = space;
this.width = width;
}
Die pdfbox Methode getFont() gibt mir ein PDFont Objekt zurück, ich caste es mittels (PDTruetypefont) (PDSimpleFont) zu einem PDTruetypeFont Objekt und würde mit pdttfont.getawtFont() ein Font Objekt erhalten.
Hiermit wird das Panel angezeigt
Java:
public void paintComponent(Graphics g) {
//Antialiasing
Graphics2D g2 = (Graphics2D)g;
Object oldAntialiase = g2.getRenderingHint(RenderingHints.KEY_ANTIALIASING);
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
//Anzeigen
g2.setFont(getPdfchar.getFont()); //Weder diese noch untere Methode führen zum Erfolg
g2.setFont(new Font(getPdfchar().getFont().getName(), getPdfchar().getFont().getStyle(), Math.round(getPdfchar().getFontsize())));
g2.drawString(String.valueOf(getPdfchar().getZeichen()),0,Math.round((this.getPdfchar().getFontsize())-(this.getPdfchar().getFontsize())*(float)0.2));
}
Ich erhalte immer folgende Meldung:
Warnung: java.lang.ClassCastException: org.apache.pdfbox.pdmodel.font.PDType1Font cannot be cast to org.apache.pdfbox.pdmodel.font.PDTrueTypeFont
java.lang.ClassCastException: org.apache.pdfbox.pdmodel.font.PDType1Font cannot be cast to org.apache.pdfbox.pdmodel.font.PDTrueTypeFont
oder solche:
Jul 17, 2012 10:13:01 AM org.apache.pdfbox.pdmodel.font.PDTrueTypeFont getawtFont
Information: Can't read the embedded font UKHXCH+UniversS-47-CondensedLight
Jul 17, 2012 10:13:02 AM org.apache.pdfbox.pdmodel.font.PDTrueTypeFont getawtFont
Information: Using font Arial instead
Wäre sehr dankbar wenn mir einer einen Denkanstoß geben könnte! Oder gibts auch andere Libraries die mir evtl helfen könnten?
Gruß