将色带应用于PDF中的TIFF
•背景: 我们正在开发AFP到PDF的工具。它涉及将AFP(高级函数处理)文件转换为PDF •详细的问题陈述: 我们有嵌入TIFF图像的AFP文件。图像对象在函数集45中描述,有点像这样表示- 我们希望使用Java/iTextAPI将此平铺图像写入PDF。 到目前为止,我们可以编写G4MMR图像。但是,我们无法将CMYK色带数据(蓝色)应用于此图像 •尝试过的解决方案: 编写G4MMR图像的代码如下-将色带应用于PDF中的TIFF,pdf,itext,tiff,afp,Pdf,Itext,Tiff,Afp,•背景: 我们正在开发AFP到PDF的工具。它涉及将AFP(高级函数处理)文件转换为PDF •详细的问题陈述: 我们有嵌入TIFF图像的AFP文件。图像对象在函数集45中描述,有点像这样表示- 我们希望使用Java/iTextAPI将此平铺图像写入PDF。 到目前为止,我们可以编写G4MMR图像。但是,我们无法将CMYK色带数据(蓝色)应用于此图像 •尝试过的解决方案: 编写G4MMR图像的代码如下- ByteArrayOutputStream decode=saveAsTIFF(,);
ByteArrayOutputStream decode=saveAsTIFF(,);
RandomAccessFileOrArray ra=新的RandomAccessFileOrArray(saveAsTIFF.toByteArray());
int pages=TiffImage.getNumberOfPages(ra);
对于(int i1=1;i1在将图像添加到PDF文件之前,您需要将CMYK颜色空间添加到图像中。不过,我恐怕这是一个解决方法。
您可以在将图像添加到PDF文件之前将其转换为默认RGB颜色空间,但这可能意味着您的图像会有一些质量损失。您正在使用的AFP资源这是一张用LZW压缩的TIFF CMYK图像。这张图像还使用了一个用G4MMR(与传统传真样式G4稍有不同的编码)压缩的“透明遮罩”
因此,图像数据已经使用CMYK颜色空间,每个波段(C、M、Y、K)都使用简单的LZW编码单独压缩,提取和存储为基本TIFF CMYK文件应该不会太困难。您还必须将透明掩码转换为G4或原始数据,以便在pdf文件中使用它来制作CMYK图像
如果你想要更好的PDF输出控制,我建议你看看pdflib如何解密LZW加密的图像?对不起,我说的是LZW加密,而我指的是LZW编码(我编辑了答案)。一个简单的LZW编解码器应该可以。另一个选择是使用libtiff(我不知道是否有java绑定)它公开了TIFFWriteRawStrip方法,允许在不解码的情况下存储每个频带。如果你想这样做,我可以发布一些伪代码
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
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);