1

iTextの最新バージョンを使用して、PDFの特定のフィールドのボーダーカラーを見つける方法はありますか? AcroField.Item を取得できましたが、そこから bordercolor を取得するオプションが表示されません。

4

1 に答える 1

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 を取得できます。

于 2015-02-04T07:38:21.890 に答える