【发布时间】:2011-06-27 14:52:24
【问题描述】:
我正在使用 iTextSharp 为 PDF 格式的现有文档添加水印。我将它们读入,创建一个 PdfTemplate 对象,将水印文本、颜色、透明度等添加到此 PdfTemplate,然后将模板添加到我使用 PdfWriter.DirectContent 获得的 PdfContentByte。
这个解决方案对我扔给它的所有文档都有效了一段时间,但由于某种原因,一些特定的 PDF 打印出来的水印文本周围有一个不透明的矩形。
我已经尝试了很多方法,包括将 PdfGState 的 OverPrintMode 设置为 1,在创建文件后打开生成的文件,然后在保存新副本之前使用 PdfStamper 的 setFormFlatening 和 setFreeTextFlatening...到目前为止没有任何效果。
问题是我不关心展平表单字段或按钮,我只想在生成整个内容后展平文档的所有层。这甚至可以通过 iText API 实现吗?
【问题讨论】:
-
我还在为这个而苦苦挣扎。我设法通过将我的 PdfGState 实例的 TextKnockout 属性设置为 false 来解决我的一些问题。这实际上是我见过的最糟糕的记录功能,谷歌搜索只给出三个结果......有没有人能够改变他们的 PdfTemplate 以便它不会在文本周围放置一个不透明的框?
-
PdfTemplate 不会自行执行此操作。它只是包装已经存在的任何绘图命令。我们可以看一些代码/示例 PDF 吗?
-
@Mark Storer 这似乎是透明度的问题,好像 PDF 是不尊重 PdfGState 的透明度属性的旧版本。此外,如果我使用虚拟打印机将此文档打印到新文件中,它看起来还不错。只有当我将它直接打印到物理打印机(哪个打印机似乎无关紧要,我尝试了一些)时才会出现问题。
标签: c# printing itext watermark