PDFBoxを使用してPDFを作成します。サインも見えました。私はそのようなテキストを書きます:
...
builderSting.append("Tm\n");
builderSting.append(" /F1 " + fontSize + "\n");
builderSting.append("Tf\n");
builderSting.append("(hello world)");
builderSting.append("Tj\n");
builderSting.append("ET");
...
PDStream stream= ...;
stream.createOutputStream().write(builder.toString().getBytes("ISO-8859-1"));
すべてがうまく機能します。しかし、builderString に Unicode 文字を書き込むと、テキストの代わりに「???」が表示されます。
それはサンプルPDFです:ここにリンク
質問 1) PDF 構造を見ると、テキストの代わりに疑問符が表示されます。はい。ユニコード文字で書く方法がわかりませんか?
9 0 obj
<<
/Type /XObject
/Subtype /Form
/BBox [100 50 0 0]
/Matrix [1 0 0 1 0 0]
/Resources <<
/Font 11 0 R
/XObject <<
/img0 12 0 R
>>
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
>>
/FormType 1
/Length 13 0 R
>>
stream
q 93.70079 0 0 50 0 0 cm /img0 Do Q
BT
1 0 0 1 93.70079 25 Tm
/F1 2
Tf
(????)Tj
ET
endstream
endobj
Encoding WinAsciEncoding でフォントを作成しました。pdfbox で別のエンコーディングを使用できますか?
PDFont font = PDTrueTypeFont.loadTTF(template, new File("//fontName.ttf"));
font.setFontEncoding(new WinAnsiEncoding());
質問 2) PDF にフォントを埋め込みました。ただし、テキストはこのフォントで書かれていません(目に見える記号 Rectangle で)。なんで?
質問 3) フォントを削除しても、テキストが残っていました (テキストが英語の場合)。デフォルトのフォントは何ですか? /F1 - 最初のフォントはどれ?
質問 4)目に見える署名のテキストの幅を計算する方法は? 何か案は?