是否可以使用C#中的iTextSharp修改PDF中的专色名称?

时间:2012-11-14 21:57:11

标签: c# itextsharp

是否可以使用C#中的iTextSharp修改PDF中的专色名称,它只是需要更改的颜色名称。

1 个答案:

答案 0 :(得分:4)

因此,您有一个使用某些专色的现有PDF,例如名为“ABC”的颜色,并且您希望操作该PDF以使其名称为“XYZ”。

这是可能的,但它需要低级别的PDF语法操作。

您需要创建一个PdfReader实例,查找定义专色的字典,更改名称,然后使用PdfStamper根据更改的PdfReader实例创建新文件。

关于如何回答您的具体问题,没有“现成的”示例(我怀疑其他人,但iText的原始开发人员会回答这样的问题),但您可以通过查看代码示例获得一些灵感来自第二版“iText in Action”的第13章: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字典的存在,然后查找所有该词典中的/分色。每当遇到要更改的名称时,请替换第二个元素。

第13章中的示例与ISO-32000-1结合使用(可以从Adobe.com网站下载)将引领潮流。