0

XFDF を FDFAnnotation にインポートして PDAnnotation に変換した後、PDAnnotationFreeText のフォントの色が失われていることがわかりました。

<freetext page="0" rect="376.81193,778.184946,500.283994,807.936941" flags="print" name="373b558a-4892-5fb4-a9aa-b4d7175d3966" title="wwh" subject="Free text" date="D:20190808175721+08'00'" width="0" creationdate="D:20190808175700+08'00'" TextColor="#00CC63" FontSize="17">
    <contents>English</contents>
    <defaultappearance>0 0 0 rg /Arial 17 Tf</defaultappearance>
    <defaultstyle>font: Arial 17pt; text-align: left; color: #00CC63</defaultstyle>
</freetext>

これは FDFAnnotation にインポートした後の詳細です

COSDictionary{
    COSName{Type}:COSName{Annot};
    COSName{Page}:COSInt{0};
    COSName{M}:COSString{D:20190808175721+08'00'};
    COSName{F}:COSInt{4};
    COSName{NM}:COSString{373b558a-4892-5fb4-a9aa-b4d7175d3966};
    COSName{Rect}:COSArray{COSFloat{376.81192};COSFloat{778.18494};COSFloat{500.284};COSFloat{807.93695};};
    COSName{T}:COSString{wwh};
    COSName{CreationDate}:COSString{D:20190808175700+08'00'};
    COSName{Subj}:COSString{Free text};
    COSName{IT}:COSName{};
    COSName{Contents}:COSString{English};
    COSName{Subtype}:COSName{FreeText};
    COSName{Q}:0;
    COSName{DA}:COSString{0 0 0 rg /Arial 17 Tf};
    COSName{DS}:COSString{font: Arial 17pt; text-align: left; color: #00CC63};
}

色の16進コードを抽出し、PDColorに変換しようとしました

int c = Integer.parseInt("#00CC63".substring(1), 16);
float r = ((c & 0xFF0000) >> 16) / 255f;
float g = ((c & 0x00FF00) >>  8) / 255f;
float b = ((c & 0x0000FF) >>  0) / 255f;
PDColor pdc = new PDColor( new float[] { r, g, b }, PDDeviceRGB.INSTANCE);

しかし、 PDColor は私の期待ではなく、背景色を変更するだけです。フォントの色を設定する方法を教えてください。

これは私のサンプルファイルです: https://1.bitsend.jp/download/c10903041b8af47195daeef1f471a366.html

4

1 に答える 1

0

これは PDFBox 2.0.17 で修正され、/DS エントリ ( annotation.getDefaultStyleString()) の色も考慮され、/DA エントリ ( annotation.getDefaultAppearance()) の色よりも優先されます。新しい実装はここで見ることができ、スナップショットはここで入手できます。

于 2019-08-16T08:25:10.767 に答える