当我创建一个 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) 字体
- 在我提供的保存代码的最后一行之后,我尝试打印目录的内容,一切都正确打印出来。
- 我还尝试在开放代码中的第一行之前打印出目录的内容,字符未显示。
所以我不知道哪里会出错。你?