1

• 背景 :

我们正在开发 AFP 到 PDF 工具。它涉及将 AFP(高级功能处理)文件转换为 PDF。

• 详细的问题陈述:

我们有嵌入 TIFF 图像的 AFP 文件。图像对象在功能集 45 中进行了描述,有点像这样 -

Image Content
 Begin Tile
  Image Encoding Parameter – TIFF LZW
   Begin Transparency Mask
      Image Encoding Parameter – G4MMR
      Image Data Elements 
   End Transparency Mask
   Image Data Elements (IDE Size 32) – 4 bands: CMYK
End Tile
End Image Content

我们想使用 Java /iText API 将此平铺图像写入 PDF。到目前为止,我们可以编写 G4MMR 图像。但是,我们无法将 CMYK 色带数据(蓝色)应用于此图像。

• 尝试的解决方案:

编写 G4MMR 图像的代码如下:

ByteArrayOutputStream decode = saveAsTIFF(<width>,<height>,<imageByteData>);                                    
RandomAccessFileOrArray ra=new RandomAccessFileOrArray(saveAsTIFF.toByteArray());          
int pages = TiffImage.getNumberOfPages(ra); 
for(int i1 = 1; i1 <= pages; i1++){
img1 = TiffImage.getTiffImage(ra, i1);                     
}
img1.scaleAbsolute(256, 75);      
document.add(img1); 

此处给出了 saveAsTIFF 方法 – http://www.jpedal.org/PDFblog/2011/08/ccitt-encoding-in-pdf-files-converting-pdf-ccitt-data-into-a-tiff/ 如前所述,我们无法将 CMYK 4 波段图像颜色数据应用于此 G4MMR 图像。

• 每个组件版本的技术堆栈:
1. JDK 1.6
2. itextpdf-5.1




——乌梅什·帕塔克

4

2 回答 2

2

您显示的 AFP 资源是用 LZW 压缩的 TIFF CMYK 图像。此图像还使用了“透明蒙版”,该蒙版使用 G4MMR 压缩(与传统传真样式 G4 略有不同的编码)。

因此图像数据已经使用 CMYK 颜色空间,每个波段 (C,M,Y,K) 都使用简单的 LZW 编码单独压缩,提取和存储为基本 TIFF CMYK 文件应该不会太难。您还必须将透明度蒙版转换为 G4 或原始数据,以在 pdf 文件中使用它来制作 CMYK 图像。

如果你想要更好的 PDF 输出控制,我建议你看看 pdflib

于 2012-09-07T08:54:38.473 回答
0

在将图像添加到 PDF 文件之前,您需要为图像添加 CMYK 颜色空间。但是,恐怕iText 可能不完全支持这一点。
一种解决方法是在将图像添加到 PDF 文件之前将其转换为默认的 RGB 颜色空间,但这可能意味着图像的质量会有所损失。

于 2012-08-17T13:24:31.263 回答