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.
}
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]);
}
}
}
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;
}
Aggregations