in src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java [234:286]
private boolean pageHasTransparency(PDResources res, final PDPage page) throws IOException {
if (res != null) {
visited.add(res.getCOSObject());
if (res.getShadingNames() != null) {
for (COSName name : res.getShadingNames()) {
PDShading s = res.getShading(name);
if ((s.getShadingType() != 2 && s.getShadingType() != 3)
|| (s.getShadingType() == 3 && s.getFunction().getFunctionType() == 2)
|| (s.getShadingType() == 2
&& s.getColorSpace().toString().contains("FunctionType"))) {
LOG.warn(s.getClass().getName() + " not supported converting to image");
return true;
}
// if (s.getShadingType() == 3) {
// COSArray sourceFunctions = ((PDFunctionType3)s.getFunction()).getFunctions();
// for (COSBase sf : sourceFunctions) {
// PDFunction f = PDFunction.create(sf);
// if (f.getFunctionType() == 2) {
// LOG.warn(s.getClass().getName() + " not supported converting to image");
// return true;
// }
// }
// }
}
}
int count = 0;
for (COSName pdxObjectName : res.getXObjectNames()) {
PDXObject pdxObject = res.getXObject(pdxObjectName);
visitedXOjects.put(pdxObjectName.getName(), pdxObject);
if (pdxObject instanceof PDFormXObject) {
PDFormXObject form = (PDFormXObject) pdxObject;
if (form.getGroup() != null && COSName.TRANSPARENCY.equals(
form.getGroup().getCOSObject().getDictionaryObject(COSName.S))) {
if (form.getGroup().getCOSObject().getItem(COSName.TYPE) != COSName.GROUP) {
return true;
}
count++;
}
PDResources formRes = form.getResources();
if (formRes != null && !visited.contains(formRes.getCOSObject())
&& pageHasTransparency(formRes, page)) {
return true;
}
}
}
hasTransparencyGroup = count > 0;
if (count > 1) {
return true;
}
}
CheckImageMask checkImageMask = new CheckImageMask(visitedXOjects, page);
return checkImageMask.foundWhite;
}