Search in sources :

Example 1 with PDAbstractPattern

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());
        }
    }
}
Also used : PDAbstractPattern(org.apache.pdfbox.pdmodel.graphics.pattern.PDAbstractPattern) PDTilingPattern(org.apache.pdfbox.pdmodel.graphics.pattern.PDTilingPattern) COSName(org.apache.pdfbox.cos.COSName) PDFormXObject(org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject) PDXObject(org.apache.pdfbox.pdmodel.graphics.PDXObject)

Example 2 with PDAbstractPattern

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);
            }
        }
    }
}
Also used : PDAbstractPattern(org.apache.pdfbox.pdmodel.graphics.pattern.PDAbstractPattern) Area(java.awt.geom.Area) PDShading(org.apache.pdfbox.pdmodel.graphics.shading.PDShading) Matrix(org.apache.pdfbox.util.Matrix) PDPattern(org.apache.pdfbox.pdmodel.graphics.color.PDPattern) PDRectangle(org.apache.pdfbox.pdmodel.common.PDRectangle) PDShadingPattern(org.apache.pdfbox.pdmodel.graphics.pattern.PDShadingPattern) PDColorSpace(org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace)

Example 3 with PDAbstractPattern

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()));
        }
    }
}
Also used : PDAbstractPattern(org.apache.pdfbox.pdmodel.graphics.pattern.PDAbstractPattern) PDTilingPattern(org.apache.pdfbox.pdmodel.graphics.pattern.PDTilingPattern) PDShading(org.apache.pdfbox.pdmodel.graphics.shading.PDShading) Color(java.awt.Color) PDColor(org.apache.pdfbox.pdmodel.graphics.color.PDColor) PDPattern(org.apache.pdfbox.pdmodel.graphics.color.PDPattern) PDShadingPattern(org.apache.pdfbox.pdmodel.graphics.pattern.PDShadingPattern) PDColorSpace(org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace)

Example 4 with PDAbstractPattern

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;
}
Also used : PDAbstractPattern(org.apache.pdfbox.pdmodel.graphics.pattern.PDAbstractPattern) COSDictionary(org.apache.pdfbox.cos.COSDictionary) COSObject(org.apache.pdfbox.cos.COSObject)

Aggregations

PDAbstractPattern (org.apache.pdfbox.pdmodel.graphics.pattern.PDAbstractPattern)4 PDColorSpace (org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace)2 PDPattern (org.apache.pdfbox.pdmodel.graphics.color.PDPattern)2 PDShadingPattern (org.apache.pdfbox.pdmodel.graphics.pattern.PDShadingPattern)2 PDTilingPattern (org.apache.pdfbox.pdmodel.graphics.pattern.PDTilingPattern)2 PDShading (org.apache.pdfbox.pdmodel.graphics.shading.PDShading)2 Color (java.awt.Color)1 Area (java.awt.geom.Area)1 COSDictionary (org.apache.pdfbox.cos.COSDictionary)1 COSName (org.apache.pdfbox.cos.COSName)1 COSObject (org.apache.pdfbox.cos.COSObject)1 PDRectangle (org.apache.pdfbox.pdmodel.common.PDRectangle)1 PDXObject (org.apache.pdfbox.pdmodel.graphics.PDXObject)1 PDColor (org.apache.pdfbox.pdmodel.graphics.color.PDColor)1 PDFormXObject (org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject)1 Matrix (org.apache.pdfbox.util.Matrix)1