- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我创建一个 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());
}
除了一个小细节外,一切都很好。由于某些原因,诸如 čšđćž 之类的字符未正确传递到进程。一旦我尝试提取数据,我的程序就会变得困惑并且无法识别这些字母。
几点说明:
所以我不知道哪里会出错。你呢?
最佳答案
您错误地使用了 PdfString
类。而不是
object = new PdfString(content.get(i));
使用
object = new PdfString(content.get(i), PdfObject.TEXT_UNICODE);
而不是
data.add(line.toString());
使用
data.add(line.toUnicodeString());
一些背景信息:
您使用的构造函数尝试使用 PDFDocEncoding:
/**
* Constructs a <CODE>PdfString</CODE>-object containing a string in the
* standard encoding <CODE>TEXT_PDFDOCENCODING</CODE>.
*
* @param value the content of the string
*/
public PdfString(String value)
您的字符 čšđćž
不存在于该编码中。
另一个构造函数允许您选择 UTF-16BE 编码:
/**
* Constructs a <CODE>PdfString</CODE>-object containing a string in the
* specified encoding.
*
* @param value the content of the string
* @param encoding an encoding
*/
public PdfString(String value, String encoding)
对于字符提取,toString
只返回内部表示,而 toUnicodeString
关心编码:
/**
* Returns the Unicode <CODE>String</CODE> value of this
* <CODE>PdfString</CODE>-object.
*
* @return A <CODE>String</CODE>
*/
public String toUnicodeString()
关于java - iText PdfDictionary 编码问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18104750/
当我创建一个 PDF 文件时,我使用以下代码将一些信息附加到它以使其对我的程序可读: PdfDictionary dictionary = new PdfDictionary();
我正在尝试在 iText7 中实现页脚,页脚在文档的最后一页上应该不同,我添加了一个事件处理程序,当文档关闭时调用该事件处理程序,但尝试在页面上循环会导致空指针异常: java.lang.NullPo
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我正在尝试使用 itext 读取文档并替换其中的字符串。但一旦被操纵,所有的西类牙字符就变成了垃圾字符。下面是更改pdf的代码。 PdfReader reader = new PdfR
我是一名优秀的程序员,十分优秀!