使用ByteArrayOutputStream进行UTF-8编码

问题描述 投票:0回答:1

我遇到非英语字符的字符编码问题。这里我使用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()));
java encoding utf-8 itext
1个回答
1
投票

PDF的设计与编码和字体之间的耦合过于紧密,并且 - 根据今天的标准 - 不必要地用于非西方文本。

代码中的问题很可能只是最终输出流的编码。已经正确地指出PDF是二进制格式。所以不要试图在输出流中引入任何编码。

相反,请查看iText字体示例,例如https://itextpdf.com/en/resources/examples/itext-7/itext-7-building-blocks-chapter-1-examples-pdffont,特别是处理外国文本和使用PdfEncodings.IDENTITY_H的例子。

如果仍有问题,请在问题中添加相关代码,特别是设置字体的代码并将文本添加到PDF页面。

© www.soinside.com 2019 - 2024. All rights reserved.