由于GetColorNonStroke
不是原始 iTextSharp 的方法,TextRenderInfo,
我假设您使用的是根据 @ChrisHaas 的博客条目从 iTextSharp 的 TextRenderInfo 和 ITextExtractionStrategy 获取颜色信息修补的版本。
成员colorStroke
和colorNonStroke
(GraphicsState
它们的值分别由TextRenderInfo
方法GetColorStroke
和返回GetColorNonStroke
)被初始化为null.
因此,只要之前没有明确的命令设置描边或非描边颜色,相应的TextRenderInfo
方法GetColorStroke
或GetColorNonStroke
将返回null.
因此,无论何时使用,在访问其成员之前renderInfo.GetColorNonStroke(),
检查它。null
如果颜色是null,
默认的。
此外,@ChrisHaas 的 iTextSharp 解析功能的颜色扩展使用不同类型的颜色对象:GrayColor, BaseColor,
并且CMYKColor.
根据您的要求,您可能想要测试返回给您的颜色类型。
如果是特殊颜色,Chris Haas 甚至写道:
SCN和scn本身就是非 RGB、CMYK 或灰色的其他一切的统称。在点击这两个中的一个之前,您实际上应该首先找到一个CS运算符,其第一个也是唯一的操作数是要使用的实际颜色空间。有很多选项,包括 DeviceRGB、DeviceCMYK、Pattern、Lab、DeviceN 等。您可以在 2008 PDF 规范第 8.6.8 节(第 171 页)的表 74 中找到这些选项。我的代码实际上并不完全正确,我不应该将CS和cs推送到SetStrokingGeneral方法,而是应该做一些进一步的处理。不幸的是,我当时拥有的所有示例 PDF 都没有此设置,因此我无法对其进行测试。希望这可以帮助你!