So erhalten Sie die Schriftfarbe mit pdfbox

Ich versuche mit pdfbox Text mit allen Informationen aus dem PDF zu extrahieren. Ich habe alle Informationen, die ich will, außer Farbe. Ich habe verschiedene Möglichkeiten ausprobiert, um die Schriftfarbe zu erhalten (einschließlichTextfarbe mit PDFBox erhalten). Funktioniert aber nicht. Und jetzt habe ich Code aus der PageDrawer-Klasse von pdfBox kopiert. Dann ist aber auch der RGB-Wert nicht korrekt.

protected void processTextPosition(TextPosition text) {

        Composite com;
        Color col;
        switch(this.getGraphicsState().getTextState().getRenderingMode()) {
        case PDTextState.RENDERING_MODE_FILL_TEXT:
            com = this.getGraphicsState().getNonStrokeJavaComposite();
            int r =       this.getGraphicsState().getNonStrokingColor().getJavaColor().getRed();
            int g = this.getGraphicsState().getNonStrokingColor().getJavaColor().getGreen();
            int b = this.getGraphicsState().getNonStrokingColor().getJavaColor().getBlue();
            int rgb = this.getGraphicsState().getNonStrokingColor().getJavaColor().getRGB();
            float []cosp = this.getGraphicsState().getNonStrokingColor().getColorSpaceValue();
            PDColorSpace pd = this.getGraphicsState().getNonStrokingColor().getColorSpace();
            break;
        case PDTextState.RENDERING_MODE_STROKE_TEXT:
            System.out.println(this.getGraphicsState().getStrokeJavaComposite().toString());
            System.out.println(this.getGraphicsState().getStrokingColor().getJavaColor().getRGB());
           break;
        case PDTextState.RENDERING_MODE_NEITHER_FILL_NOR_STROKE_TEXT:
            //basic support for text rendering mode "invisible"
            Color nsc = this.getGraphicsState().getStrokingColor().getJavaColor();
            float[] components = {Color.black.getRed(),Color.black.getGreen(),Color.black.getBlue()};
            Color  c1 = new Color(nsc.getColorSpace(),components,0f);
            System.out.println(this.getGraphicsState().getStrokeJavaComposite().toString());
            break;
        default:
            System.out.println(this.getGraphicsState().getNonStrokeJavaComposite().toString());
            System.out.println(this.getGraphicsState().getNonStrokingColor().getJavaColor().getRGB());
    }

Ich benutze den obigen Code. Die Werte, die erhalten werden, sind r = 0, g = 0, b = 0, innerhalb des cosp-Objektwerts ist [0.0], innerhalb von pd object array = null und colorSpace = null. und der RGB-Wert ist immer -16777216. Bitte hilf mir. Danke im Voraus.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage