【问题标题】:iText flattening issue with watermark text水印文本的 iText 展平问题
【发布时间】: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


【解决方案1】:

好吧,因为我很久以前解决了它,所以回来关闭它:

问题在于存在问题的 pdf 非常旧(PDF 标准的 v1.3)并且不支持作为水印元素一部分的透明度。

我通过虚拟打印机将旧 PDF 打印到临时文件中,然后继续处理该文件,该文件现在是 PDF 标准的更新版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-08
    • 2018-07-04
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    相关资源
    最近更新 更多