【问题标题】:How to remove SMask automatically added by iText?如何删除 iText 自动添加的 SMask?
【发布时间】:2017-05-29 12:45:32
【问题描述】:

当我将透明 PNG 图像放入我创建的 PDF 中时,iText(版本 5.5.10)会自动为其创建一个软蒙版。但是,在某些情况下,我需要删除此蒙版(或首先阻止 iText 生成它),因为正如 PDF 规范明确指出的那样,此蒙版会覆盖图形状态下的任何其他当前软蒙版,我绝对需要后者占上风。

if (<my-condition> && picture?.ImageMask != null)
  picture.ImageMask = null;

不起作用,因为传递 null 会引发异常(iText 显然会尝试使用提供的值而不进行任何检查,这会导致空引用)。

【问题讨论】:

  • 如果您不希望 iText 创建 SMASK,只需使用不透明的图像!因此,在这种情况下,只需进行一些图像预处理,去除透明度并根据您的要求更换透明部分。
  • 好吧,我可能不得不回到这个,但我不会说这是我喜欢的方法。请注意,这些不是我可以轻松预处理的手动创建的图片。它是生产系统的一部分,它们大量到达并需要相应地处理。进行昂贵的预处理,而不是简单地消除现有变量。 :-)

标签: c# pdf itext


【解决方案1】:

哦,天哪,我的错,我得到了纠正,虽然我浏览了文档,但明显的解决方案首先让我忽略了。 一个布尔值:

if (<my-condition> && picture.Smask)
  picture.Smask = false;

【讨论】:

  • 好吧,有时它比想象的要容易... ;)
  • 我在字母 M 周围寻找 mask 并没有在 S 中注意到它,虽然事后看来很明显,当然...... :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-10
  • 2013-08-17
  • 1970-01-01
相关资源
最近更新 更多