Search in sources :

Example 1 with ImageRenderInfo

use of com.itextpdf.kernel.pdf.canvas.parser.data.ImageRenderInfo in project i7j-pdfsweep by itext.

the class PdfCleanUpProcessor method cleanInlineImage.

private void cleanInlineImage() {
    ImageRenderInfo encounteredImage = ((PdfCleanUpEventListener) getEventListener()).getEncounteredImage();
    PdfCleanUpFilter.FilterResult<ImageData> imageFilterResult = filter.filterImage(encounteredImage);
    ImageData filteredImage;
    if (imageFilterResult.isModified()) {
        filteredImage = imageFilterResult.getFilterResult();
    } else {
        filteredImage = ImageDataFactory.create(encounteredImage.getImage().getImageBytes());
    }
    if (filteredImage != null) {
        Boolean imageMaskFlag = encounteredImage.getImage().getPdfObject().getAsBool(PdfName.ImageMask);
        if (imageMaskFlag != null && (boolean) imageMaskFlag) {
            filteredImage.makeMask();
        }
        float[] ctm = pollNotAppliedCtm();
        writeNotAppliedGsParams(false, false);
        openNotWrittenTags();
        getCanvas().addImageWithTransformationMatrix(filteredImage, ctm[0], ctm[1], ctm[2], ctm[3], ctm[4], ctm[5], true);
    }
// TODO
// PdfCanvas doesn't have a method that writes inline image using pdf stream, and only have method which
// accepts Image as parameter. That's why we can't write image just as it was in original file, we convert it to Image.
// IMPORTANT: If writing of pdf stream of not changed inline image will be implemented, don't forget to ensure that
// inline image color space is present in new resources if necessary.
}
Also used : ImageData(com.itextpdf.io.image.ImageData) ImageRenderInfo(com.itextpdf.kernel.pdf.canvas.parser.data.ImageRenderInfo)

Example 2 with ImageRenderInfo

use of com.itextpdf.kernel.pdf.canvas.parser.data.ImageRenderInfo in project i7j-pdfsweep by itext.

the class PdfCleanUpProcessor method checkIfImageAndClean.

private void checkIfImageAndClean(List<PdfObject> operands) {
    PdfStream imageStream = getXObjectStream((PdfName) operands.get(0));
    if (PdfName.Image.equals(imageStream.getAsName(PdfName.Subtype))) {
        ImageRenderInfo encounteredImage = ((PdfCleanUpEventListener) getEventListener()).getEncounteredImage();
        FilteredImagesCache.FilteredImageKey key = filter.createFilteredImageKey(encounteredImage.getImage(), encounteredImage.getImageCtm(), document);
        PdfImageXObject imageToWrite = getFilteredImage(key, encounteredImage.getImageCtm());
        if (imageToWrite != null) {
            float[] ctm = pollNotAppliedCtm();
            writeNotAppliedGsParams(false, false);
            openNotWrittenTags();
            getCanvas().addXObjectWithTransformationMatrix(imageToWrite, ctm[0], ctm[1], ctm[2], ctm[3], ctm[4], ctm[5]);
        }
    }
}
Also used : PdfImageXObject(com.itextpdf.kernel.pdf.xobject.PdfImageXObject) PdfStream(com.itextpdf.kernel.pdf.PdfStream) ImageRenderInfo(com.itextpdf.kernel.pdf.canvas.parser.data.ImageRenderInfo)

Example 3 with ImageRenderInfo

use of com.itextpdf.kernel.pdf.canvas.parser.data.ImageRenderInfo in project i7j-pdfsweep by itext.

the class PdfCleanUpEventListener method getEncounteredImage.

/**
 * Get the last encountered ImageRenderInfo, then clears the internal buffer
 *
 * @return the ImageRenderInfo object that was encountered when processing the last image rendering operation
 */
ImageRenderInfo getEncounteredImage() {
    if (content.size() == 0) {
        throw new PdfException(imageDataExpected);
    }
    IEventData eventData = content.get(0);
    if (!(eventData instanceof ImageRenderInfo)) {
        throw new PdfException(imageDataExpected);
    }
    content.clear();
    return (ImageRenderInfo) eventData;
}
Also used : IEventData(com.itextpdf.kernel.pdf.canvas.parser.data.IEventData) PdfException(com.itextpdf.kernel.exceptions.PdfException) ImageRenderInfo(com.itextpdf.kernel.pdf.canvas.parser.data.ImageRenderInfo)

Aggregations

ImageRenderInfo (com.itextpdf.kernel.pdf.canvas.parser.data.ImageRenderInfo)3 ImageData (com.itextpdf.io.image.ImageData)1 PdfException (com.itextpdf.kernel.exceptions.PdfException)1 PdfStream (com.itextpdf.kernel.pdf.PdfStream)1 IEventData (com.itextpdf.kernel.pdf.canvas.parser.data.IEventData)1 PdfImageXObject (com.itextpdf.kernel.pdf.xobject.PdfImageXObject)1