Search in sources :

Example 21 with PDColorSpace

use of org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace in project pdfbox by apache.

the class SetStrokingDeviceCMYKColor method process.

@Override
public void process(Operator operator, List<COSBase> arguments) throws IOException {
    PDColorSpace cs = context.getResources().getColorSpace(COSName.DEVICECMYK);
    context.getGraphicsState().setStrokingColorSpace(cs);
    super.process(operator, arguments);
}
Also used : PDColorSpace(org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace)

Example 22 with PDColorSpace

use of org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace in project pdfbox by apache.

the class SetStrokingDeviceGrayColor method process.

@Override
public void process(Operator operator, List<COSBase> arguments) throws IOException {
    PDColorSpace cs = context.getResources().getColorSpace(COSName.DEVICEGRAY);
    context.getGraphicsState().setStrokingColorSpace(cs);
    super.process(operator, arguments);
}
Also used : PDColorSpace(org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace)

Example 23 with PDColorSpace

use of org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace in project pdfbox by apache.

the class PageDrawer method applySoftMaskToPaint.

// TODO: move soft mask apply to getPaint()?
private Paint applySoftMaskToPaint(Paint parentPaint, PDSoftMask softMask) throws IOException {
    if (softMask == null || softMask.getGroup() == null) {
        return parentPaint;
    }
    PDColor backdropColor = null;
    if (COSName.LUMINOSITY.equals(softMask.getSubType())) {
        COSArray backdropColorArray = softMask.getBackdropColor();
        PDColorSpace colorSpace = softMask.getGroup().getGroup().getColorSpace();
        if (colorSpace != null && backdropColorArray != null) {
            backdropColor = new PDColor(backdropColorArray, colorSpace);
        }
    }
    TransparencyGroup transparencyGroup = new TransparencyGroup(softMask.getGroup(), true, softMask.getInitialTransformationMatrix(), backdropColor);
    BufferedImage image = transparencyGroup.getImage();
    if (image == null) {
        // sample file: PDFJS-6967_reduced_outside_softmask.pdf
        return parentPaint;
    }
    BufferedImage gray = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
    if (COSName.ALPHA.equals(softMask.getSubType())) {
        gray.setData(image.getAlphaRaster());
    } else if (COSName.LUMINOSITY.equals(softMask.getSubType())) {
        Graphics g = gray.getGraphics();
        g.drawImage(image, 0, 0, null);
        g.dispose();
    } else {
        throw new IOException("Invalid soft mask subtype.");
    }
    gray = getRotatedImage(gray);
    Rectangle2D tpgBounds = transparencyGroup.getBounds();
    adjustRectangle(tpgBounds);
    return new SoftMask(parentPaint, gray, tpgBounds, backdropColor, softMask.getTransferFunction());
}
Also used : Graphics(java.awt.Graphics) PDTransparencyGroup(org.apache.pdfbox.pdmodel.graphics.form.PDTransparencyGroup) COSArray(org.apache.pdfbox.cos.COSArray) Rectangle2D(java.awt.geom.Rectangle2D) IOException(java.io.IOException) PDSoftMask(org.apache.pdfbox.pdmodel.graphics.state.PDSoftMask) BufferedImage(java.awt.image.BufferedImage) PDColor(org.apache.pdfbox.pdmodel.graphics.color.PDColor) PDColorSpace(org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace)

Example 24 with PDColorSpace

use of org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace 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 25 with PDColorSpace

use of org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace 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)

Aggregations

PDColorSpace (org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace)35 IOException (java.io.IOException)13 PDPattern (org.apache.pdfbox.pdmodel.graphics.color.PDPattern)9 PDColor (org.apache.pdfbox.pdmodel.graphics.color.PDColor)8 ValidationError (org.apache.pdfbox.preflight.ValidationResult.ValidationError)8 COSArray (org.apache.pdfbox.cos.COSArray)7 COSBase (org.apache.pdfbox.cos.COSBase)6 COSName (org.apache.pdfbox.cos.COSName)6 PDRectangle (org.apache.pdfbox.pdmodel.common.PDRectangle)5 ColorSpaceHelper (org.apache.pdfbox.preflight.graphic.ColorSpaceHelper)5 BufferedImage (java.awt.image.BufferedImage)4 WritableRaster (java.awt.image.WritableRaster)4 PDPageContentStream (org.apache.pdfbox.pdmodel.PDPageContentStream)4 PDIndexed (org.apache.pdfbox.pdmodel.graphics.color.PDIndexed)4 PDTilingPattern (org.apache.pdfbox.pdmodel.graphics.pattern.PDTilingPattern)4 PreflightConfiguration (org.apache.pdfbox.preflight.PreflightConfiguration)4 ColorSpaceHelperFactory (org.apache.pdfbox.preflight.graphic.ColorSpaceHelperFactory)4 Paint (java.awt.Paint)3 Point (java.awt.Point)3 Rectangle2D (java.awt.geom.Rectangle2D)3