use of org.apache.pdfbox.pdmodel.graphics.pattern.PDAbstractPattern in project pdfbox by apache.
the class RemoveAllText method processResources.
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());
}
}
}
use of org.apache.pdfbox.pdmodel.graphics.pattern.PDAbstractPattern in project pdfbox by apache.
the class PageDrawer method intersectShadingBBox.
// checks whether this is a shading pattern and if yes,
// get the transformed BBox and intersect with current paint area
// need to do it here and not in shading getRaster() because it may have been rotated
private void intersectShadingBBox(PDColor color, Area area) throws IOException {
if (color.getColorSpace() instanceof PDPattern) {
PDColorSpace colorSpace = color.getColorSpace();
PDAbstractPattern pat = ((PDPattern) colorSpace).getPattern(color);
if (pat instanceof PDShadingPattern) {
PDShading shading = ((PDShadingPattern) pat).getShading();
PDRectangle bbox = shading.getBBox();
if (bbox != null) {
Matrix m = Matrix.concatenate(getInitialMatrix(), pat.getMatrix());
Area bboxArea = new Area(bbox.transform(m));
area.intersect(bboxArea);
}
}
}
}
use of org.apache.pdfbox.pdmodel.graphics.pattern.PDAbstractPattern in project pdfbox by apache.
the class PageDrawer method getPaint.
/**
* Returns an AWT paint for the given PDColor.
*
* @param color The color to get a paint for. This can be an actual color or a pattern.
* @throws IOException
*/
protected Paint getPaint(PDColor color) throws IOException {
PDColorSpace colorSpace = color.getColorSpace();
if (!(colorSpace instanceof PDPattern)) {
float[] rgb = colorSpace.toRGB(color.getComponents());
return new Color(clampColor(rgb[0]), clampColor(rgb[1]), clampColor(rgb[2]));
} else {
PDPattern patternSpace = (PDPattern) colorSpace;
PDAbstractPattern pattern = patternSpace.getPattern(color);
if (pattern instanceof PDTilingPattern) {
PDTilingPattern tilingPattern = (PDTilingPattern) pattern;
if (tilingPattern.getPaintType() == PDTilingPattern.PAINT_COLORED) {
// colored tiling pattern
return tilingPaintFactory.create(tilingPattern, null, null, xform);
} else {
// uncolored tiling pattern
return tilingPaintFactory.create(tilingPattern, patternSpace.getUnderlyingColorSpace(), color, xform);
}
} else {
PDShadingPattern shadingPattern = (PDShadingPattern) pattern;
PDShading shading = shadingPattern.getShading();
if (shading == null) {
LOG.error("shadingPattern is null, will be filled with transparency");
return new Color(0, 0, 0, 0);
}
return shading.toPaint(Matrix.concatenate(getInitialMatrix(), shadingPattern.getMatrix()));
}
}
}
use of org.apache.pdfbox.pdmodel.graphics.pattern.PDAbstractPattern in project pdfbox by apache.
the class PDResources method getPattern.
/**
* Returns the pattern resource with the given name, or null if none exists.
*
* @param name Name of the pattern resource.
* @throws IOException if something went wrong.
*/
public PDAbstractPattern getPattern(COSName name) throws IOException {
COSObject indirect = getIndirect(COSName.PATTERN, name);
if (cache != null && indirect != null) {
PDAbstractPattern cached = cache.getPattern(indirect);
if (cached != null) {
return cached;
}
}
// get the instance
PDAbstractPattern pattern = null;
COSDictionary dict = (COSDictionary) get(COSName.PATTERN, name);
if (dict != null) {
pattern = PDAbstractPattern.create(dict);
}
if (cache != null) {
cache.put(indirect, pattern);
}
return pattern;
}
Aggregations