我试试这段代码
PDDocument doc = null;
try
{
doc = PDDocument.load("C:/Users/bcalvo/Desktop/leon/20130710.pdf");
//doc = PDDocument.load("C:/Users/bcalvo/Desktop/color.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("color: " + graphicState.getStrokingColor().getColorSpace().getName());
//System.out.println("color: " + graphicState.getStrokingColor().getJavaColor() );
float colorSpaceValues[] = graphicState.getStrokingColor().getColorSpaceValue();
for (float c : colorSpaceValues)
System.out.println(c * 255);
}
finally
{
if (doc != null)
doc.close();
}
}
当我执行它时,会显示下一个错误:
2013 年 7 月 10 日下午 1:23:31 org.apache.pdfbox.util.PDFStreamEngine processOperator 警告:java.lang.ClassCastException:org.apache.pdfbox.util.PDFStreamEngine 无法转换为 org.apache.pdfbox.pdfviewer.PageDrawer java.lang.ClassCastException: org.apache.pdfbox.util.PDFStreamEngine 不能在 org.apache.pdfbox.util.operator.pagedrawer.CurveTo.process(CurveTo.java:45) 中转换为 org.apache.pdfbox.pdfviewer.PageDrawer ) 在 org.apache.pdfbox.util.PDFStreamEngine 的 org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:268) 的 org.apache.pdfbox.util.PDFStreamEngine.processOperator(PDFStreamEngine.java:554)。 processSubStream(PDFStreamEngine.java:235) at org.apache.pdfbox.util.PDFStreamEngine.processStream(PDFStreamEngine.java:215) at com.prueba.ExtractColorFonts.main(ExtractColorFonts.java:26)
它引用错误的行是这样的:
engine.processStream(page, page.findResources(), page.getContents().getStream());
有人知道如何修复这个错误吗?