我遇到非英语字符的字符编码问题。在这里,我正在使用itext库生成pdf。
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
Document document = new Document();
document.setMargins(-50.0f, -50.0f, 15.0f, 0.0f);
PdfWriter.getInstance(document, byteArrayOutputStream);
document.open();
myObj.setByteArrayInputStream(new byteArrayInputStream(byteArrayOutputStream.toByteArray()));
我尝试了以下代码
myObj.setByteArrayInputStream(new ByteArrayInputStream(byteArrayOutputStream.toString("UTF-8").getBytes()));
答案 0 :(得分:1)
在设计PDF时,编码和字体之间的耦合太紧密了,按照今天的标准,非西方文本不必要地难以使用。
您的代码中的问题很可能比仅最终输出流的编码更为根本。已经正确指出PDF是二进制格式。因此,请勿尝试在输出流中引入任何编码。
相反,请看一下iText字体示例,例如https://itextpdf.com/en/resources/examples/itext-7/itext-7-building-blocks-chapter-1-examples-pdffont,尤其是在处理外国文字并使用PdfEncodings.IDENTITY_H
的示例中。
如果仍然有问题,请在问题中添加相关代码,尤其是设置字体并将文本添加到PDF页面的代码。