PDF ファイルを作成するとき、このコードを使用していくつかの情報を添付して、プログラムで読み取りできるようにします。
PdfDictionary dictionary = new PdfDictionary();
PdfObject object;
PdfName index;
ArrayList<String> content = getCompactData(document);
for (int i = 0; i < content.size(); i++)
{
object = new PdfString(content.get(i));
index = new PdfName(Integer.toString(i+1));
dictionary.put(index, object);
}
writer.getExtraCatalog().putAll(dictionary);
プログラムを開くときは、次のコードを使用してデータを抽出します。
PdfDictionary dictionary = reader.getCatalog();
PdfName index;
PdfObject line;
ArrayList<String> data = new ArrayList<String>();
for (int i = 1; i < dictionary.size()-2; i++)
{
index = new PdfName(Integer.toString(i));
line = dictionary.getAsString(index);
data.add(line.toString());
}
細かい点を除いて、すべてうまく機能します。čšđćž などの文字は、何らかの理由でプロセスに正しく渡されません。データを抽出しようとすると、プログラムが混乱して文字を認識できなくなります。
いくつかのメモ:
- ワークスペースのエンコーディングは UTF-8 です
- 私のプログラムで作業するとき、問題なくこれらの文字を入力でき、正しく表示されます。
- これらの文字をサポートしていることがわかっているカスタム .ttf (truetype) フォントを使用しています
- 私が提供した保存コードの最後の行の後に、カタログの内容を印刷しようとしましたが、すべてが適切に印刷されました。
- また、オープンコードの最初の行の1行前のカタログの内容を印刷しようとしましたが、文字が表示されませんでした。
そのため、どこですべてがうまくいかないのかわかりません。あなたは?