【问题标题】:iText embedding Color space (ICC Profile) in PDF Images在 PDF 图像中嵌入颜色空间(ICC 配置文件)的 iText
【发布时间】:2020-03-18 10:57:04
【问题描述】:

我正在使用 iText-7 java 库使用以下代码生成 pdf。 (我正在将图像添加到 pdf doc)

 pdf = new PdfDocument(writer);
 Document document = new Document(pdf);

 ImageData data = ImageDataFactory.create(imgfilepath);

 Image img = new Image(data);
 img.scaleToFit(imageWidth, imageHeight);

 img.setFixedPosition(1, 0, 0);
 document.add(img);

-使用相同的图像,我从 acrobat 创建了 PDF。

问题:

(1) 当我打印以上 2 个 PDF 时 - 1 个使用 iText 创建,2 个 - 使用 Acrobat 创建 - 我看到打印质量不同。

  • 所以我做了研究,才知道有一些相关的 iCC 配置文件(颜色配置文件)需要绑定。

当我检查两个 PDF 的元数据时,我知道 PDF 的色彩空间属性存在一些差异。(我在这里检查了元数据:https://www.metadata2go.com

ITEXT PDF 元数据详细信息:

Acrobat PDF 元数据详细信息

我的问题

(1) 在 CMYK 机器 (ex.indigo) 中打印时,如何使用 iText 获得与 Acrobat 相同的质量?

(2) 有没有办法将颜色配置文件(颜色空间)附加到 PDF 中的图像? (目前我尝试过的看起来不起作用)

您可以在此处查看这两个 PDF:

(1)PDF Created Using Acrobat
(2)PDF Created Using iText

这里有一些来自 iText RUPS 的更多信息:

iText 生成的 PDF 详细信息

Acrobat 生成的 PDF:

【问题讨论】:

    标签: java pdf itext itext7


    【解决方案1】:

    如果图像被操纵,ICC配置文件似乎丢失了。

    我使用 PdfCanvas api 将从 iPhone 拍摄的图像添加到 PDF 中,它看起来不错。

        @Test
        public void testImageColorSpace() throws Exception {
    
            String imageWithIcc = resourceFile("image-ios-profile.jpg");
            String destination = targetFile("image-colorspace-itext-pdfcanvas.pdf");
            
            PdfDocument pdfDocument = new PdfDocument(new PdfWriter(destination));
            PdfPage page = pdfDocument.addNewPage(new PageSize(mm2pt(400f), mm2pt(400f)));
    
            PdfCanvas pdfCanvas = new PdfCanvas(page);
            
            ImageData imageData = ImageDataFactory.create(imageWithIcc);
    
            AffineTransform at = AffineTransform.getTranslateInstance(mm2pt(100f), mm2pt(100f));
            at.concatenate(AffineTransform.getScaleInstance(mm2pt(200f), mm2pt(200f)));
            float[] matrix = new float[6];
            at.getMatrix(matrix);
    
            pdfCanvas.addImage(imageData, matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
            pdfDocument.close();
        }
    

    【讨论】:

      猜你喜欢
      • 2015-10-14
      • 1970-01-01
      • 2010-09-27
      • 2012-03-08
      • 2010-09-07
      • 1970-01-01
      • 1970-01-01
      • 2017-07-07
      • 2014-11-24
      相关资源
      最近更新 更多