C#でiTextSharpを使用してPDFのスポットカラー名を変更することは可能ですか?変更が必要なのはカラー名だけです。
1 に答える
したがって、いくつかのスポットカラー(たとえば「ABC」という名前の色)を使用する既存のPDFがあり、そのPDFを操作して名前が「XYZ」になるようにします。
これは可能ですが、低レベルのPDF構文操作が必要です。
PdfReaderインスタンスを作成し、スポットカラーを定義する辞書を探し、名前を変更してから、PdfStamperを使用して、変更されたPdfReaderインスタンスに基づいて新しいファイルを作成する必要があります。
特定の質問に答える方法についての「既成の」例はありませんが(他の誰かは疑わしいですが、iTextの元の開発者がこのような質問に答えます)、第13章のコードサンプルを見るとインスピレーションを得ることができます。 「iTextinAction」の第2版の概要:http://itextpdf.com/book/chapter.php?id = 13
manipulatePdf()
たとえば、次の例のメソッドを参照してください。http: //itextpdf.com/examples/iia.php?id=239
この例では、上記の原則を使用してURLを別のURLに置き換えます。
スポットカラー名が保存されている場所へのパスを見つけ、その名前を変更し、変更を永続化するように、この例を適応させる必要があります。
PdfName
ヒント:スポットカラー名は、最初の要素が名前(/ Separation)である配列になり、2番目のエントリは変更する名前になります(これは新しいインスタンスに置き換えたい名前です)。等々。
この/Separation配列を見つける方法は?ページをループし(getPageN()
メソッドはページディクショナリを提供します)、すべてのページのリソースを取得し(pageDict.getAsDict(PdfName.RESOURCES)
)、/ Colorspaceディクショナリの存在を探し、そのディクショナリ内のすべての/Separationカラーを探します。変更したい名前に遭遇したときはいつでも、2番目の要素を置き換えてください。
第13章の例とISO-32000-1(Adobe.comサイトからダウンロード可能)を組み合わせた例が先導します。