我正在尝试使用itext读取文档并替换其中的字符串。但是一旦被操纵,所有西班牙人的角色就变成了垃圾人物。以下是更改pdf的代码。
{{1}}
在实际的pdf中有一个字符串$ {address-line-one},我将其替换为“20th Street”
这有效,但是这个西班牙语单词在流
中Documentación成为Documentaci�n
和其他西班牙语一样。
我还在java控制台中打印了bytes [],发现读取本身没有正确获得该字符。
有什么建议吗?
答案 0 :(得分:1)
您使用
new String(data)
将字节转换为字符串(使用一些默认编码)和
dataString.getBytes("UTF-8")
将字符串转回字节(使用utf-8)。
因此,如果第一个操作中的默认编码与utf-8不匹配,则这些转换将创建如上所示的伪像。
所以请使用
new String(data, encoding)
和
dataString.getBytes(encoding)
代替。
话虽如此,utf-8在这里是一个非常不合适的编码,使用的是拉丁语-1 / ISO-8559-1。
据说您编辑内容的方法仅适用于非常具体的PDF。特别是使用过的字体的编码必须是 WinAnsiEncoding 和行或"字段"必须在每个指令中绘制。此外,您的替换文件不得长于替换文本,并且不得包含Latin-1和WinAnsiEncoding不同的字符或PDF格式中具有特殊含义的字符,并且您必须确保不会偶然更改字符串。