Search in sources :

Example 6 with PdfImageXObject

use of com.itextpdf.kernel.pdf.xobject.PdfImageXObject in project i7j-pdfsweep by itext.

the class CleanUpCsCompareUtilTest method differentImageBitsPerPixelTest.

@Test
public void differentImageBitsPerPixelTest() {
    PdfImageXObject image1 = createMockedPdfImageXObject(PdfName.DeviceRGB, 8);
    PdfImageXObject image2 = createMockedPdfImageXObject(PdfName.DeviceRGB, 16);
    Assert.assertFalse(CleanUpCsCompareUtil.isOriginalCsCompatible(image1, image2));
}
Also used : PdfImageXObject(com.itextpdf.kernel.pdf.xobject.PdfImageXObject) IntegrationTest(com.itextpdf.test.annotations.type.IntegrationTest) ExtendedITextTest(com.itextpdf.test.ExtendedITextTest) Test(org.junit.Test)

Example 7 with PdfImageXObject

use of com.itextpdf.kernel.pdf.xobject.PdfImageXObject in project i7j-pdfsweep by itext.

the class CleanUpCsCompareUtilTest method imageReadExceptionTest.

@Test
@LogMessages(messages = @LogMessage(messageTemplate = CleanUpLogMessageConstant.CANNOT_OBTAIN_IMAGE_INFO_AFTER_FILTERING))
public void imageReadExceptionTest() {
    PdfStream stream1 = new PdfStream();
    stream1.put(PdfName.BitsPerComponent, new PdfNumber(8));
    stream1.put(PdfName.ColorSpace, PdfName.DeviceCMYK);
    PdfImageXObject image1 = new PdfImageXObject(stream1);
    stream1 = new PdfStream();
    stream1.put(PdfName.BitsPerComponent, new PdfNumber(8));
    stream1.put(PdfName.ColorSpace, PdfName.DeviceCMYK);
    PdfImageXObject image2 = new PdfImageXObject(stream1);
    Assert.assertFalse(CleanUpCsCompareUtil.isOriginalCsCompatible(image1, image2));
}
Also used : PdfImageXObject(com.itextpdf.kernel.pdf.xobject.PdfImageXObject) PdfNumber(com.itextpdf.kernel.pdf.PdfNumber) PdfStream(com.itextpdf.kernel.pdf.PdfStream) IntegrationTest(com.itextpdf.test.annotations.type.IntegrationTest) ExtendedITextTest(com.itextpdf.test.ExtendedITextTest) Test(org.junit.Test) LogMessages(com.itextpdf.test.annotations.LogMessages)

Example 8 with PdfImageXObject

use of com.itextpdf.kernel.pdf.xobject.PdfImageXObject in project i7j-pdfsweep by itext.

the class PdfCleanUpProcessorUnitTest method createAndCompareImages.

private static boolean createAndCompareImages(PdfObject firstCs, PdfObject secondCs) {
    PdfImageXObject firstImage = createImageWithCs(firstCs);
    PdfImageXObject secondImage = createImageWithCs(secondCs);
    boolean compareFirstToSecondResult = PdfCleanUpProcessor.areColorSpacesDifferent(firstImage, secondImage);
    boolean compareSecondToFirstResult = PdfCleanUpProcessor.areColorSpacesDifferent(secondImage, firstImage);
    if (compareFirstToSecondResult != compareSecondToFirstResult) {
        throw new IllegalStateException("The comparing of CS shall be a commutative operation.");
    }
    return compareFirstToSecondResult;
}
Also used : PdfImageXObject(com.itextpdf.kernel.pdf.xobject.PdfImageXObject)

Example 9 with PdfImageXObject

use of com.itextpdf.kernel.pdf.xobject.PdfImageXObject in project i7j-pdfsweep by itext.

the class PdfCleanUpProcessorUnitTest method createImageWithCs.

private static PdfImageXObject createImageWithCs(PdfObject cs) {
    PdfStream stream = new PdfStream();
    stream.put(PdfName.Type, PdfName.XObject);
    stream.put(PdfName.Subtype, PdfName.Image);
    if (cs != null) {
        stream.put(PdfName.ColorSpace, cs);
    }
    return new PdfImageXObject(stream);
}
Also used : PdfImageXObject(com.itextpdf.kernel.pdf.xobject.PdfImageXObject) PdfStream(com.itextpdf.kernel.pdf.PdfStream)

Example 10 with PdfImageXObject

use of com.itextpdf.kernel.pdf.xobject.PdfImageXObject in project i7j-pdfsweep by itext.

the class CleanUpImagesCompareTool method extractImagesFromPdf.

private Map<Integer, PageImageObjectsPaths> extractImagesFromPdf(String pdf, String outputPath) throws IOException, InterruptedException {
    try (PdfReader readerPdf = new PdfReader(pdf);
        PdfDocument pdfDoc = new PdfDocument(readerPdf)) {
        Map<Integer, PageImageObjectsPaths> imageObjectDatas = new HashMap<>();
        for (int i = 1; i <= pdfDoc.getNumberOfPages(); i++) {
            PdfPage page = pdfDoc.getPage(i);
            PageImageObjectsPaths imageObjectData = new PageImageObjectsPaths(page.getPdfObject().getIndirectReference());
            Stack<LocalPathItem> baseLocalPath = new Stack<LocalPathItem>();
            PdfResources pdfResources = page.getResources();
            if (pdfResources.getPdfObject().isIndirect()) {
                imageObjectData.addIndirectReference(pdfResources.getPdfObject().getIndirectReference());
            } else {
                baseLocalPath.push(new DictPathItem(PdfName.Resources));
            }
            PdfDictionary xObjects = pdfResources.getResource(PdfName.XObject);
            if (xObjects == null) {
                continue;
            }
            if (xObjects.isIndirect()) {
                imageObjectData.addIndirectReference(xObjects.getIndirectReference());
                baseLocalPath.clear();
            } else {
                baseLocalPath.push(new DictPathItem(PdfName.XObject));
            }
            boolean isPageToGsExtract = false;
            for (PdfName objectName : xObjects.keySet()) {
                if (!xObjects.get(objectName).isStream() || !PdfName.Image.equals(xObjects.getAsStream(objectName).getAsName(PdfName.Subtype))) {
                    continue;
                }
                PdfImageXObject pdfObject = new PdfImageXObject(xObjects.getAsStream(objectName));
                baseLocalPath.push(new DictPathItem(objectName));
                if (!useGs) {
                    String extension = pdfObject.identifyImageFileExtension();
                    String fileName = outputPath + objectName + "_" + i + "." + extension;
                    createImageFromPdfXObject(fileName, pdfObject);
                } else {
                    isPageToGsExtract = true;
                }
                Stack<LocalPathItem> reversedStack = new Stack<>();
                reversedStack.addAll(baseLocalPath);
                Stack<LocalPathItem> resultStack = new Stack<>();
                resultStack.addAll(reversedStack);
                imageObjectData.addLocalPath(resultStack);
                baseLocalPath.pop();
            }
            if (useGs && isPageToGsExtract) {
                String fileName = "Page_" + i;
                ghostscriptHelper.runGhostScriptImageGeneration(pdf, outputPath, fileName, String.valueOf(i));
            }
            ImageRenderListener listener = new ImageRenderListener();
            PdfCanvasProcessor parser = new PdfCanvasProcessor(listener);
            parser.processPageContent(page);
            ignoredImagesAreas.put(i, listener.getImageRectangles());
            imageObjectDatas.put(i, imageObjectData);
        }
        return imageObjectDatas;
    }
}
Also used : DictPathItem(com.itextpdf.kernel.utils.objectpathitems.DictPathItem) PdfImageXObject(com.itextpdf.kernel.pdf.xobject.PdfImageXObject) PdfCanvasProcessor(com.itextpdf.kernel.pdf.canvas.parser.PdfCanvasProcessor) PdfName(com.itextpdf.kernel.pdf.PdfName) HashMap(java.util.HashMap) PdfDictionary(com.itextpdf.kernel.pdf.PdfDictionary) PdfResources(com.itextpdf.kernel.pdf.PdfResources) PdfReader(com.itextpdf.kernel.pdf.PdfReader) PdfDocument(com.itextpdf.kernel.pdf.PdfDocument) Point(com.itextpdf.kernel.geom.Point) Stack(java.util.Stack) LocalPathItem(com.itextpdf.kernel.utils.objectpathitems.LocalPathItem) PdfPage(com.itextpdf.kernel.pdf.PdfPage)

Aggregations

PdfImageXObject (com.itextpdf.kernel.pdf.xobject.PdfImageXObject)16 ExtendedITextTest (com.itextpdf.test.ExtendedITextTest)8 IntegrationTest (com.itextpdf.test.annotations.type.IntegrationTest)8 Test (org.junit.Test)8 PdfStream (com.itextpdf.kernel.pdf.PdfStream)5 Rectangle (com.itextpdf.kernel.geom.Rectangle)3 PdfDocument (com.itextpdf.kernel.pdf.PdfDocument)3 PdfName (com.itextpdf.kernel.pdf.PdfName)3 PdfReader (com.itextpdf.kernel.pdf.PdfReader)3 ImageData (com.itextpdf.io.image.ImageData)2 PdfNumber (com.itextpdf.kernel.pdf.PdfNumber)2 PdfWriter (com.itextpdf.kernel.pdf.PdfWriter)2 Logger (org.slf4j.Logger)2 Point (com.itextpdf.kernel.geom.Point)1 PdfArray (com.itextpdf.kernel.pdf.PdfArray)1 PdfDictionary (com.itextpdf.kernel.pdf.PdfDictionary)1 PdfObject (com.itextpdf.kernel.pdf.PdfObject)1 PdfPage (com.itextpdf.kernel.pdf.PdfPage)1 PdfResources (com.itextpdf.kernel.pdf.PdfResources)1 PdfCanvasProcessor (com.itextpdf.kernel.pdf.canvas.parser.PdfCanvasProcessor)1