2012-08-16 45 views
1

•背景:將顏色帶應用於PDF中的TIFF

我們正在開發法新社至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 

我們希望這個平鋪圖像寫入到PDF無論是使用Java/iText的API。到目前爲止,我們可以編寫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製作帕塔克

回答

0

您需要添加一個CMYK色彩空間然後將其添加到PDF文件中。不過恐怕這個might not be fully supported in iText
解決方法是在將圖像添加到PDF文件之前將圖像轉換爲默認RGB色彩空間,但這可能意味着圖像質量會有所下降。

2

您顯示的AFP資源是一個用LZW壓縮的TIFF CMYK圖像。這張圖片還使用了一個用G4MMR壓縮的「透明度遮罩」(與傳統的傳統風格G4稍有不同)。

因此,圖像數據已經在使用CMYK色彩空間,每個波段(C,M,Y,K)都是使用簡單的LZW編碼單獨壓縮的,並且不應太難以提取並存儲爲基本的TIFF CMYK文件。您還必須將透明度蒙版轉換爲G4或原始數據,才能在PDF文件中使用它來拼接CMYK圖像。

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

+0

如何解密LZW加密的圖像? – UmeshPathak 2012-09-20 09:02:17

+0

對不起,我說LZW加密時,我的意思是LZW編碼(我編輯答案)。一個簡單的LZW編解碼器應該這樣做。另一個選擇是使用libtiff(我不知道是否有一個java綁定),它揭示了TIFFWriteRawStrip方法,它允許存儲每個波段而不解碼它。如果你想這樣做,我可以發佈一些僞代碼,如果你喜歡 – 2012-09-25 07:27:38

相關問題