•背景:
我们正在开发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图像。
- Umesh Pathak
答案 0 :(得分:2)
您正在显示的AFP资源是使用LZW压缩的TIFF CMYK图像。此图像也使用“透明蒙版”,使用G4MMR压缩(编码与传统传真样式G4略有不同)。
因此,图像数据已经在使用CMYK颜色空间,每个频段(C,M,Y,K)使用简单的LZW编码单独压缩,并且不应该太难以提取和存储为基本TIFF CMYK文件。您还必须将透明度蒙版转换为G4或原始数据,以便在pdf文件中使用它来生成CMYK图像。
如果你想要更好的PDF输出控制,我建议你看一下pdflib
答案 1 :(得分:0)
在将图像添加到PDF文件之前,需要在图像中添加CMYK色彩空间。但是我担心这个might not be fully supported in iText。在您将图像添加到PDF文件之前,可能需要将图像转换为默认的RGB颜色空间,但这可能意味着图像会有一些质量损失。