在PDF中将色带应用于TIFF

时间:2012-08-16 12:09:38

标签: pdf itext tiff afp

•背景:

我们正在开发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




- Umesh Pathak

2 个答案:

答案 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颜色空间,但这可能意味着图像会有一些质量损失。