1

PDFBoxを使用してPDFから各文字のフォントの色を取得することは可能ですか?私の前の質問の解決策: How to extract Font color using PDFBOX java? 以下のフォント属性の取得が私のコードスニペットになるまで進めました

    PDDocument doc = null;
    doc = PDDocument.load("C:\\Users\\Desktop\\abc.pdf");
    PDFStreamEngine engine = new PDFStreamEngine(ResourceLoader.loadProperties("org/apache/pdfbox/resources/PageDrawer.properties"));
    PDPage page = (PDPage)doc.getDocumentCatalog().getAllPages().get(0);
    engine.processStream(page, page.findResources(), page.getContents().getStream());
    PDGraphicsState graphicState = engine.getGraphicsState();
    System.out.println(graphicState.getNonStrokingColor().getJavaColor()); 
    doc.close();

実際の PDF には次のテキストのみが含まれます。MessageHiここで、メッセージにはフォントの色として青が含まれ、Hi緑が保持されます。上記のコードを実行すると、表示されます

java.awt.Color[r=0,g=255,b=0]  ----> green 

同様に、以下のコードを使用して各文字とそれぞれのフォント属性を取得しようとしましたが、色を表示している間は常に表示されますjava.awt.Color[r=0,g=0,b=0] --- black color

public class PrintTextLocations extends PDFTextStripper {

public PrintTextLocations() throws IOException {
    super.setSortByPosition(true);
}

public static void main(String[] args) throws Exception
{
    PDDocument document = null;
    document = PDDocument.load("C:\\Users\\Desktop\\abc.pdf");
    List allPages = document.getDocumentCatalog().getAllPages();
    PrintTextLocations printer = new PrintTextLocations();
        for (int i = 0; i < allPages.size(); i++) 
        {
            PDPage page = (PDPage) allPages.get(i);
            System.out.println("Processing page: " + i);
            PDStream contents = page.getContents();
            if (contents != null)
            {
                printer.processStream(page, page.findResources(), page.getContents().getStream());              
            }
        }       
        document.close();
    } 
protected void processTextPosition(TextPosition text){      
        try {
            System.out.println("String[" + text.getXDirAdj() + ","
                    + text.getYDirAdj() + " fs=" + text.getFontSize() + " xscale="
                    + text.getXScale() + " height=" + text.getHeightDir()
                    + " space=" + text.getWidthOfSpace() + " width="
                    + text.getWidthDirAdj() + "]" + text.getCharacter() + getGraphicsState().getNonStrokingColor().getJavaColor());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }                   
}
}

各文字のフォントの色を取得するのを手伝ってくれる人はいますか?

ありがとう

4

0 に答える 0