diff --git a/gradle.properties b/gradle.properties index 9c181cc..484a237 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ group = org.xbib.graphics name = graphics -version = 5.6.0 +version = 5.6.1 diff --git a/graphics-pdfbox/src/main/java/org/xbib/graphics/pdfbox/analyze/DocumentAnalyzer.java b/graphics-pdfbox/src/main/java/org/xbib/graphics/pdfbox/analyze/DocumentAnalyzer.java index 0bfe5a6..5ed927f 100644 --- a/graphics-pdfbox/src/main/java/org/xbib/graphics/pdfbox/analyze/DocumentAnalyzer.java +++ b/graphics-pdfbox/src/main/java/org/xbib/graphics/pdfbox/analyze/DocumentAnalyzer.java @@ -10,6 +10,7 @@ import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDResources; import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.font.PDFont; +import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace; import org.apache.pdfbox.pdmodel.graphics.image.PDImage; import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; @@ -545,12 +546,18 @@ public class DocumentAnalyzer { @Override public void strokePath() { - colorSpaces.add(getGraphicsState().getStrokingColor().getColorSpace().getName()); + PDColorSpace pdColorSpace = getGraphicsState().getStrokingColor().getColorSpace(); + if (pdColorSpace != null) { + colorSpaces.add(pdColorSpace.getName()); + } } @Override public void fillPath(int windingRule) { - colorSpaces.add(getGraphicsState().getStrokingColor().getColorSpace().getName()); + PDColorSpace pdColorSpace = getGraphicsState().getStrokingColor().getColorSpace(); + if (pdColorSpace != null) { + colorSpaces.add(pdColorSpace.getName()); + } } @Override diff --git a/graphics-pdfbox/src/test/java/org/xbib/graphics/pdfbox/test/DocumentAnalyzerTest.java b/graphics-pdfbox/src/test/java/org/xbib/graphics/pdfbox/test/DocumentAnalyzerTest.java index 5a44c44..e6f03b8 100644 --- a/graphics-pdfbox/src/test/java/org/xbib/graphics/pdfbox/test/DocumentAnalyzerTest.java +++ b/graphics-pdfbox/src/test/java/org/xbib/graphics/pdfbox/test/DocumentAnalyzerTest.java @@ -41,4 +41,31 @@ public class DocumentAnalyzerTest { Files.delete(path); Files.delete(tmp); } + + @Test + public void testPdfXDocument() throws IOException { + String sample = "20250017556.pdf"; + Path tmp = Files.createTempDirectory("document-analyzer"); + Path path = tmp.resolve(sample); + try (InputStream inputStream = getClass().getResourceAsStream(sample); + OutputStream outputStream = Files.newOutputStream(path)) { + if (inputStream != null) { + inputStream.transferTo(outputStream); + DocumentAnalyzer documentAnalyzer = new DocumentAnalyzer(); + documentAnalyzer.process(path.toFile()); + logger.log(Level.INFO, "result = " + documentAnalyzer.getResult()); + logger.log(Level.INFO, "isvalid = " + documentAnalyzer.isValid()); + logger.log(Level.INFO, "suffixes = " + documentAnalyzer.getSuffixes()); + logger.log(Level.INFO, "colorspaces = " + documentAnalyzer.getColorSpaces()); + logger.log(Level.INFO, "iscolor = " + documentAnalyzer.isColor()); + logger.log(Level.INFO, "isgray = " + documentAnalyzer.isGray()); + logger.log(Level.INFO, "isA4 = " + documentAnalyzer.isA4()); + logger.log(Level.INFO, "isLetter = " + documentAnalyzer.isLetter()); + logger.log(Level.INFO, "islandscape = " + documentAnalyzer.isLandscape()); + logger.log(Level.INFO, "isimage = " + documentAnalyzer.isImage()); + } + } + Files.delete(path); + Files.delete(tmp); + } } diff --git a/graphics-pdfbox/src/test/resources/org/xbib/graphics/pdfbox/test/20250017556.pdf b/graphics-pdfbox/src/test/resources/org/xbib/graphics/pdfbox/test/20250017556.pdf new file mode 100644 index 0000000..a7b75f1 Binary files /dev/null and b/graphics-pdfbox/src/test/resources/org/xbib/graphics/pdfbox/test/20250017556.pdf differ