Search in sources :

Example 6 with PDShading

use of org.apache.pdfbox.pdmodel.graphics.shading.PDShading in project pdfbox by apache.

the class ResourcesValidationProcess method validateShadingPattern.

/**
 * This method check the Shading entry of the resource dictionary if exists.
 *
 * @param context
 * @param resources
 * @throws ValidationException
 */
protected void validateShadingPattern(PreflightContext context, PDResources resources) throws ValidationException {
    try {
        for (COSName name : resources.getShadingNames()) {
            PDShading shading = resources.getShading(name);
            ContextHelper.validateElement(context, shading, SHADING_PATTERN_PROCESS);
        }
    } catch (IOException e) {
        context.addValidationError(new ValidationError(ERROR_GRAPHIC_INVALID_PATTERN_DEFINITION, e.getMessage(), e));
    }
}
Also used : PDShading(org.apache.pdfbox.pdmodel.graphics.shading.PDShading) COSName(org.apache.pdfbox.cos.COSName) IOException(java.io.IOException) ValidationError(org.apache.pdfbox.preflight.ValidationResult.ValidationError)

Example 7 with PDShading

use of org.apache.pdfbox.pdmodel.graphics.shading.PDShading in project pdfbox by apache.

the class ShadingPatternValidationProcess method validate.

@Override
public void validate(PreflightContext context) throws ValidationException {
    PreflightPath vPath = context.getValidationPath();
    if (vPath.isEmpty()) {
        return;
    }
    if (!vPath.isExpectedType(PDShading.class)) {
        context.addValidationError(new ValidationError(PreflightConstants.ERROR_GRAPHIC_MISSING_OBJECT, "ShadingPattern validation required at least a PDResources"));
    } else {
        PDShading shadingResource = (PDShading) vPath.peek();
        PDPage page = vPath.getClosestPathElement(PDPage.class);
        checkColorSpace(context, page, shadingResource);
        checkGraphicState(context, page, shadingResource);
    }
}
Also used : PDShading(org.apache.pdfbox.pdmodel.graphics.shading.PDShading) PDPage(org.apache.pdfbox.pdmodel.PDPage) ValidationError(org.apache.pdfbox.preflight.ValidationResult.ValidationError) PreflightPath(org.apache.pdfbox.preflight.PreflightPath)

Example 8 with PDShading

use of org.apache.pdfbox.pdmodel.graphics.shading.PDShading in project pdfbox-graphics2d by rototor.

the class PdfBoxGraphics2DPaintApplier method applyPaint.

@Override
public PDShading applyPaint(Paint paint, PDPageContentStream contentStream, AffineTransform tf, IPaintEnv env) throws IOException {
    PaintApplierState state = new PaintApplierState();
    state.document = env.getDocument();
    state.resources = env.getResources();
    state.contentStream = contentStream;
    state.colorMapper = env.getColorMapper();
    state.imageEncoder = env.getImageEncoder();
    state.composite = env.getComposite();
    state.pdExtendedGraphicsState = null;
    state.env = env;
    state.tf = tf;
    PDShading shading = applyPaint(paint, state);
    if (state.pdExtendedGraphicsState != null)
        contentStream.setGraphicsStateParameters(extGStateCache.makeUnqiue(state.pdExtendedGraphicsState));
    return shading;
}
Also used : PDShading(org.apache.pdfbox.pdmodel.graphics.shading.PDShading)

Example 9 with PDShading

use of org.apache.pdfbox.pdmodel.graphics.shading.PDShading in project pdfbox-graphics2d by rototor.

the class PdfBoxGraphics2D method draw.

public void draw(Shape s) {
    try {
        contentStreamSaveState();
        PDShading pdShading = applyPaint();
        if (pdShading != null)
            applyShadingAsColor(pdShading);
        if (stroke instanceof BasicStroke) {
            BasicStroke basicStroke = (BasicStroke) this.stroke;
            // Cap Style maps 1:1 between Java and PDF Spec
            contentStream.setLineCapStyle(basicStroke.getEndCap());
            // Line Join Style maps 1:1 between Java and PDF Spec
            contentStream.setLineJoinStyle(basicStroke.getLineJoin());
            if (basicStroke.getMiterLimit() > 0) {
                // Also Miter maps 1:1 between Java and PDF Spec
                // (NB: set the miter-limit only if value is > 0)
                contentStream.setMiterLimit(basicStroke.getMiterLimit());
            }
            AffineTransform tf = new AffineTransform();
            tf.concatenate(baseTransform);
            tf.concatenate(transform);
            double scaleX = tf.getScaleX();
            contentStream.setLineWidth((float) Math.abs(basicStroke.getLineWidth() * scaleX));
            float[] dashArray = basicStroke.getDashArray();
            if (dashArray != null) {
                for (int i = 0; i < dashArray.length; i++) dashArray[i] = (float) Math.abs(dashArray[i] * scaleX);
                contentStream.setLineDashPattern(dashArray, (float) Math.abs(basicStroke.getDashPhase() * scaleX));
            }
        }
        walkShape(s);
        contentStream.stroke();
        contentStreamRestoreState();
    } catch (IOException e) {
        throwException(e);
    }
}
Also used : PDShading(org.apache.pdfbox.pdmodel.graphics.shading.PDShading) IOException(java.io.IOException)

Aggregations

PDShading (org.apache.pdfbox.pdmodel.graphics.shading.PDShading)9 IOException (java.io.IOException)3 Area (java.awt.geom.Area)2 PDRectangle (org.apache.pdfbox.pdmodel.common.PDRectangle)2 PDColorSpace (org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace)2 PDPattern (org.apache.pdfbox.pdmodel.graphics.color.PDPattern)2 PDAbstractPattern (org.apache.pdfbox.pdmodel.graphics.pattern.PDAbstractPattern)2 PDShadingPattern (org.apache.pdfbox.pdmodel.graphics.pattern.PDShadingPattern)2 ValidationError (org.apache.pdfbox.preflight.ValidationResult.ValidationError)2 Matrix (org.apache.pdfbox.util.Matrix)2 Color (java.awt.Color)1 Paint (java.awt.Paint)1 TexturePaint (java.awt.TexturePaint)1 COSDictionary (org.apache.pdfbox.cos.COSDictionary)1 COSName (org.apache.pdfbox.cos.COSName)1 COSObject (org.apache.pdfbox.cos.COSObject)1 PDPage (org.apache.pdfbox.pdmodel.PDPage)1 PDColor (org.apache.pdfbox.pdmodel.graphics.color.PDColor)1 PDTilingPattern (org.apache.pdfbox.pdmodel.graphics.pattern.PDTilingPattern)1 PreflightPath (org.apache.pdfbox.preflight.PreflightPath)1