iTextの最新バージョンを使用して、PDFの特定のフィールドのボーダーカラーを見つける方法はありますか? AcroField.Item を取得できましたが、そこから bordercolor を取得するオプションが表示されません。
1 に答える
この PDF をご覧ください: text_fields.pdf。この PDF は、TextFieldsの例を使用して作成されました。次のコード スニペットは、フィールドの境界線を name に設定するために使用されましたtext_2。
text.setBorderStyle(PdfBorderDictionary.STYLE_SOLID);
text.setBorderColor(BaseColor.BLUE);
text.setBorderWidth(2);
ここで、 iText RUPSを使用して PDF 内を調べ、このフィールドのフィールド ディクショナリ/ウィジェット アノテーションを確認すると、次の構造が表示されます。

実線の境界線スタイル (キーの値は) と境界線の幅 ( ) を値 2で定義する/BSディクショナリが表示されます。/S/S/W
また、エントリの境界線の色 ( /BC) エントリは、次の/MK3 つの値を持つ配列であることがわかります[ 0 0 1 ]。これは、境界線の色が、赤の値が 0、緑の値が 0、青の値が 1 の RGB 色であることを意味します。これはBaseColor.BLUE、ファイルを作成したときに色を設定したことと一致しています。
AcroField.Itemあなたはフィールドのオブジェクトを持っていると言います。ここで、マージされたフィールド/ウィジェット アノテーション ディクショナリを取得し、iText RUPS によって示されるパスをたどる必要があります。
AcroFields.Item item = acroFields.getFieldItem(fldName);
PdfDictionary merged = item.getMerged(0);
PdfDictionary mk = merged.getAsDict(PdfName.MK);
PdfArray bc = mk.getAsArray(PdfName.BC);
配列に格納された値はbc、背景色について通知します。配列に値が 1 つしかない場合はグレー、3 つある場合はRGBカラー、4 つある場合はCMYKカラーになります。
警告:/BC一部の値が存在しない可能性があります (たとえば、エントリがない可能性があります)。その場合、NullPointerExceptions を取得できます。