2011-06-27 72 views
0

我正在使用iTextSharp爲PDF格式的現有文檔添加水印。我閱讀它們,創建一個PdfTemplate對象,將水印文本,顏色,透明度等添加到此PdfTemplate中,然後將該模板添加到使用PdfWriter.DirectContent的PdfContentByte中。iText展平問題與水印文本

這個解決方案已經爲我所投放的所有文檔工作了一段時間,但由於某些原因,一些特定的PDF已經在水印文本週圍打印了一個不透明的矩形。

我已經嘗試了很多東西,包括將PdfGState的OverPrintMode設置爲1,在創建它之後打開生成的文件,然後在保存新副本之前使用PdfStamper的setFormFlattening和setFreeTextFlattening ...至今沒有任何工作。

問題是我不在乎拼合表單域或按鈕,我只是想在生成完整的東西后將文檔的所有圖層展平。 iText API甚至有可能嗎?

+0

我還在爲這件事而苦苦掙扎。我設法通過將我的PdfGState實例的TextKnockout屬性設置爲false來解決我的一些問題。這實際上是我見過的最糟糕的記錄功能,谷歌搜索只提供了三個結果...有沒有人能夠改變他們的PDF模板,使它不會在文本週圍放置一個不透明的盒子? –

+0

PdfTemplate不會自己做。它只是包裝任何繪圖命令已經存在。我們可以看到一些代碼/樣本PDF文件嗎? –

+0

@Mark Storer它似乎是一個透明度問題,就好像PDF是一個不尊重PdfGState透明屬性的舊版本。另外,如果我使用虛擬打印機將此文檔打印到新文件,它看起來很好。只有當我直接打印到物理打印機(該打印機似乎不重要,我已經嘗試了幾次),問題纔會顯現。 –

回答

0

好了,回來收這一個,因爲我很久以前解決它:

的問題是,有問題的PDF文件是很老(PDF標準1.3版)並沒有支持作爲水印元素一部分的透明度。

我通過將虛擬打印機打印到臨時文件來解決這個問題,然後繼續處理該文件,該文件現在是PDF標準的新版本。