protected PBoxPDXImage(PDImageXObjectProxy simplePDObject, PDInheritableResources resources, String type, PDDocument document, PDFAFlavour flavour) { super(simplePDObject, resources, type, document, flavour); this.interpolate = simplePDObject.getInterpolate(); }
@Override public boolean getImageMask() { return imageXObject == null ? false : imageXObject.isStencil(); }
@Override public Long getBitsPerComponent() { return imageXObject == null ? null : Long.valueOf(imageXObject.getBitsPerComponent()); }
private void parseImageXObject(PDImageXObjectProxy xobj, String id) { COSBase baseColorSpace = ((COSStream) xobj.getCOSObject()).getItem(COSName.CS); if (baseColorSpace == null) { baseColorSpace = ((COSStream) xobj.getCOSObject()).getItem(COSName.COLORSPACE); PDColorSpace colorSpace = xobj.getColorSpace(); idColorSpace = checkColorSpaceID(idColorSpace, colorSpace); if (checkIDBeforeProcess(idColorSpace)) { COSBase mask = xobj.getCOSStream().getDictionaryObject(COSName.MASK); if (mask instanceof COSStream) { COSBase maskBase = ((COSStream) xobj.getCOSObject()).getItem(COSName.MASK); idMask = getId(maskBase, FeatureObjectType.IMAGE_XOBJECT); if (checkIDBeforeProcess(idMask)) { try { PDImageXObjectProxy imxobj = xobj.getMask(); parseImageXObject(imxobj, idMask); } catch (IOException e) { COSBase sMask = xobj.getCOSStream().getDictionaryObject(COSName.SMASK); if (sMask instanceof COSStream) { COSBase sMaskBase = ((COSStream) xobj.getCOSObject()).getItem(COSName.SMASK); idSMask = getId(sMaskBase, FeatureObjectType.IMAGE_XOBJECT); if (checkIDBeforeProcess(idSMask)) { try { PDImageXObjectProxy imxobj = xobj.getSoftMask(); parseImageXObject(imxobj, idSMask); } catch (IOException e) { COSBase alternates = xobj.getCOSStream().getDictionaryObject(COSName.getPDFName("Alternates"));
private List<PDColorSpace> getImageCS() { if (this.jpeg2000List == null) { this.jpeg2000List = parseJPXStream(); } PDImageXObjectProxy image = (PDImageXObjectProxy) this.simplePDObject; if (!image.isStencil()) { try { PDColorSpace buffer = ColorSpaceFactory.getColorSpace(image.getColorSpace(), null, resources, 0, false, this.document, this.flavour); if (buffer == null) { buffer = this.colorSpaceFromImage; } if (buffer != null) { List<PDColorSpace> colorSpaces = new ArrayList<>(MAX_NUMBER_OF_ELEMENTS); colorSpaces.add(buffer); return Collections.unmodifiableList(colorSpaces); } } catch (IOException e) { LOGGER.debug("Could not obtain Image XObject color space. " + e.getMessage(), e); } } return Collections.emptyList(); }
@Override public List<StreamFilterAdapter> getFilterAdapters() { if (imageXObject != null && imageXObject.getCOSObject() != null) { COSBase base = imageXObject.getCOSStream().getDictionaryObject(COSName.DECODE_PARMS); List<StreamFilterAdapter> res = new ArrayList<>(); if (base instanceof COSDictionary) { res.add(new PBStreamFilterAdapter(base)); } else if (base instanceof COSArray) { for (COSBase baseElem : (COSArray) base) { if (baseElem instanceof COSDictionary) { res.add(new PBStreamFilterAdapter(baseElem)); } else { res.add(null); } } } return Collections.unmodifiableList(res); } return Collections.emptyList(); }
private static void processImageAlternates(PDImageXObjectProxy xObject) { COSBase alternates = ((COSDictionary) xObject.getCOSObject()).getDictionaryObject(COSName.getPDFName("Alternates")); if (alternates instanceof COSArray) { for (COSBase obj : (COSArray) alternates) { if (obj instanceof COSDictionary) { COSBase image = ((COSDictionary) obj).getDictionaryObject(COSName.IMAGE); if (image instanceof COSStream) { processXObject(new PDImageXObjectProxy(new PDStream((COSStream) image), null)); } } } } }
private List<? extends PDXImage> getAlternates() { final List<PDXImage> alternates = new ArrayList<>(); try (final COSStream imageStream = ((PDImageXObjectProxy) this.simplePDObject).getCOSStream()) { final COSBase buffer = imageStream.getDictionaryObject(COSName.getPDFName(ALTERNATES)); this.addAlternates(alternates, buffer, ((PDImageXObjectProxy) this.simplePDObject).getResources()); } catch (IOException excep) { // TODO Auto-generated catch block excep.printStackTrace(); } return alternates; }
private void addAlternate(List<PDXImage> alternates, COSDictionary buffer, PDResources resourcesToAdd) { COSBase alternatesImages = buffer.getDictionaryObject(COSName.IMAGE); if (alternatesImages instanceof COSStream) { final PDStream stream = new PDStream((COSStream) alternatesImages); PDImageXObjectProxy imageXObject = new PDImageXObjectProxy(stream, resourcesToAdd); alternates.add(new PBoxPDXImage(imageXObject, resources, this.document, this.flavour)); } }
private static void processXObject(PDXObject xObject) { if (xObject == null || isKeyVisited(xObject.getCOSObject().getKey())) { return; } registerDictionaryAFKeys((COSDictionary) xObject.getCOSObject()); if (xObject instanceof PDFormXObject) { parseResources(((PDFormXObject) xObject).getResources()); } else if (xObject instanceof PDImageXObjectProxy) { try { processXObject(((PDImageXObjectProxy) xObject).getMask()); } catch (IOException e) { LOGGER.error("Can not obtain Image xobject Mask", e); } try { processXObject(((PDImageXObjectProxy) xObject).getMask()); } catch (IOException e) { LOGGER.error("Can not obtain Image xobject SMask", e); } processImageAlternates((PDImageXObjectProxy) xObject); } }
@Override public Long getHeight() { return imageXObject == null ? null : Long.valueOf(imageXObject.getHeight()); }
@Override public InputStream getMetadata() { if (imageXObject != null) { return PBAdapterHelper.getMetadataStream(imageXObject.getMetadata()); } return null; }
COSBase base = getBase(baseThumb); if (base instanceof COSStream) { PDImageXObjectProxy img = new PDImageXObjectProxy(new PDStream((COSStream) base), null); parseImageXObject(img, thumbID); } else {
@Override public boolean isInterpolate() { return imageXObject == null ? false : imageXObject.getInterpolate(); }