是否可以在 C# 中使用 iTextSharp 修改 PDF 中的专色名称,它只是需要更改的颜色名称。
1 回答
因此,您有一个使用一些专色的现有 PDF,例如名为“ABC”的颜色,并且您想要操作该 PDF,以便名称为“XYZ”。
这是可能的,但它需要低级别的 PDF 语法操作。
您需要创建一个 PdfReader 实例,查找定义专色的字典,更改名称,然后使用 PdfStamper 基于更改后的 PdfReader 实例创建一个新文件。
没有关于如何回答您的特定问题的“现成”示例(我怀疑其他人,但 iText 的原始开发人员会回答这样的问题),但您可以通过查看第 13 章中的代码示例获得一些灵感《iText in Action》第二版:http: //itextpdf.com/book/chapter.php ?id=13
例如,参见manipulatePdf()
本示例中的方法:http: //itextpdf.com/examples/iia.php ?id=239
在本示例中,使用上述原理将一个 URL 替换为另一个 URL。
您需要修改此示例,以便找到存储专色名称的位置的路径、更改该名称并保留更改。
提示:专色名称将在一个数组中,其中第一个元素是名称(/Separation),第二个条目将是您要更改的名称(这是您要替换为新PdfName
实例的名称),等等。
如何找到这个 /Separation 数组?我将遍历页面(该getPageN()
方法将为您提供页面字典),获取每个页面的资源(pageDict.getAsDict(PdfName.RESOURCES)
),查找 /Colorspace 字典的存在,然后查找该字典中的所有 /Separation 颜色。每当遇到要更改的名称时,替换第二个元素。
第 13 章中的示例与 ISO-32000-1(可从 Adobe.com 站点下载)相结合将引领潮流。