/** * Check if there needs to be a scaling transformation applied. * * @param appearanceStream * @return the need for a scaling transformation. */ private boolean resolveNeedsScaling(PDAppearanceStream appearanceStream) { // Check if there is a transformation within the XObjects content PDResources resources = appearanceStream.getResources(); return resources != null && resources.getXObjectNames().iterator().hasNext(); }
if (resources != null && resources.getXObjectNames().iterator().hasNext()) Iterator<COSName> xObjectNames = resources.getXObjectNames().iterator();
for (COSName name : resources.getXObjectNames())
for (COSName name : resources.getXObjectNames()) {
private static void processResources(PDResources resources) throws IOException { for (COSName name : resources.getXObjectNames()) { PDXObject xobject = resources.getXObject(name); if (xobject instanceof PDFormXObject) { PDFormXObject formXObject = (PDFormXObject) xobject; writeTokensToStream(formXObject.getContentStream(), createTokensWithoutText(formXObject)); processResources(formXObject.getResources()); } } for (COSName name : resources.getPatternNames()) { PDAbstractPattern pattern = resources.getPattern(name); if (pattern instanceof PDTilingPattern) { PDTilingPattern tilingPattern = (PDTilingPattern) pattern; writeTokensToStream(tilingPattern.getContentStream(), createTokensWithoutText(tilingPattern)); processResources(tilingPattern.getResources()); } } }
/** * Check if there needs to be a scaling transformation applied. * * @param appearanceStream * @return the need for a scaling transformation. */ private boolean resolveNeedsScaling(PDAppearanceStream appearanceStream) { // Check if there is a transformation within the XObjects content PDResources resources = appearanceStream.getResources(); return resources != null && resources.getXObjectNames().iterator().hasNext(); }
/** * Check if there needs to be a scaling transformation applied. * * @param appearanceStream * @return the need for a scaling transformation. */ private boolean resolveNeedsScaling(PDAppearanceStream appearanceStream) { // Check if there is a transformation within the XObjects content PDResources resources = appearanceStream.getResources(); return resources != null && resources.getXObjectNames().iterator().hasNext(); }
for (COSName name : resources.getXObjectNames())
private static void parseResourcesXObjects(PDResources resources) { for (COSName name : resources.getXObjectNames()) { try { PDXObject xObject = resources.getXObject(name); processXObject(xObject); } catch (IOException e) { LOGGER.error("Can not obtain xobject from resources", e); } } }
public static void testPDFBoxExtractImages() throws Exception { PDDocument document = PDDocument.load(new File("D:/Temp/Test.pdf")); PDPageTree list = document.getPages(); for (PDPage page : list) { PDResources pdResources = page.getResources(); for (COSName c : pdResources.getXObjectNames()) { PDXObject o = pdResources.getXObject(c); if (o instanceof org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject) { File file = new File("D:/Temp/" + System.nanoTime() + ".png"); ImageIO.write(((org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject)o).getImage(), "png", file); } } } }
if (resources != null && resources.getXObjectNames().iterator().hasNext()) Iterator<COSName> xObjectNames = resources.getXObjectNames().iterator();
if (resources != null && resources.getXObjectNames().iterator().hasNext()) Iterator<COSName> xObjectNames = resources.getXObjectNames().iterator();
logger.info("Page No : " + (iPage+1)); PDResources pdResources = list.get(iPage).getResources(); for (COSName c : pdResources.getXObjectNames()) { PDXObject o = pdResources.getXObject(c); if (o instanceof org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject) {
public List<RenderedImage> getImagesFromPDF(PDDocument document) throws IOException { List<RenderedImage> images = new ArrayList<>(); for (PDPage page : document.getPages()) { images.addAll(getImagesFromResources(page.getResources())); } return images; } private List<RenderedImage> getImagesFromResources(PDResources resources) throws IOException { List<RenderedImage> images = new ArrayList<>(); for (COSName xObjectName : resources.getXObjectNames()) { PDXObject xObject = resources.getXObject(xObjectName); if (xObject instanceof PDFormXObject) { images.addAll(getImagesFromResources(((PDFormXObject) xObject).getResources())); } else if (xObject instanceof PDImageXObject) { images.add(((PDImageXObject) xObject).getImage()); } } return images; }
private Set<String> parseXObjectFromResources(PDResources resources) { if (resources == null || resources.getXObjectNames() == null) { return null; } Set<String> xobjectsIDs = new HashSet<>(); for (COSName name : resources.getXObjectNames()) { COSDictionary dict = (COSDictionary) resources.getCOSObject().getDictionaryObject(COSName.XOBJECT); COSBase base = dict.getItem(name); String id = getId(base, FeatureObjectType.IMAGE_XOBJECT); xobjectsIDs.add(id); if (checkIDBeforeProcess(id)) { try { PDXObject xobj = resources.getXObject(name); if (xobj instanceof PDImageXObjectProxy) { parseImageXObject((PDImageXObjectProxy) xobj, id); } else if (xobj instanceof PDFormXObject) { parseFormXObject((PDFormXObject) xobj, id); } else if (xobj instanceof PDPostScriptXObject) { reporter.report(PBFeaturesObjectCreator.createPostScriptXObjectFeaturesObject(id)); } } catch (IOException e) { LOGGER.info(e); xobjectCreationProblem(id, e.getMessage()); } } } return xobjectsIDs; }
private Set<String> parseColorSpaceFromResources(PDResources resources) { if (resources == null || resources.getXObjectNames() == null) { return null; } Set<String> colorSpaceIDs = new HashSet<>(); for (COSName name : resources.getColorSpaceNames()) { COSDictionary dict = (COSDictionary) resources.getCOSObject().getDictionaryObject(COSName.COLORSPACE); COSBase base = dict.getItem(name); String id = getId(base, FeatureObjectType.COLORSPACE); try { PDColorSpace colorSpace = resources.getColorSpace(name); id = checkColorSpaceID(id, colorSpace); colorSpaceIDs.add(id); if (checkIDBeforeProcess(id)) { parseColorSpace(colorSpace, id); } } catch (IOException e) { LOGGER.info(e); colorSpaceCreationProblem(id, e.getMessage()); } } return colorSpaceIDs; }
for (COSName name : resources.getXObjectNames())
private void extractFontResources(PDResources resources) throws IOException { for (COSName key : resources.getFontNames()) { PDFont font = resources.getFont(key); extractStrategy.extract(font); } for (COSName name : resources.getXObjectNames()) { PDXObject xobject = resources.getXObject(name); if (xobject instanceof PDFormXObject) { PDFormXObject xObjectForm = (PDFormXObject) xobject; PDResources formResources = xObjectForm.getResources(); if (formResources != null) extractFontResources(formResources); } } }
for (COSName name : resources.getXObjectNames())
private static void processResources(PDResources resources) throws IOException { for (COSName name : resources.getXObjectNames()) { PDXObject xobject = resources.getXObject(name); if (xobject instanceof PDFormXObject) { PDFormXObject formXObject = (PDFormXObject) xobject; writeTokensToStream(formXObject.getContentStream(), createTokensWithoutText(formXObject)); processResources(formXObject.getResources()); } } for (COSName name : resources.getPatternNames()) { PDAbstractPattern pattern = resources.getPattern(name); if (pattern instanceof PDTilingPattern) { PDTilingPattern tilingPattern = (PDTilingPattern) pattern; writeTokensToStream(tilingPattern.getContentStream(), createTokensWithoutText(tilingPattern)); processResources(tilingPattern.getResources()); } } }