我正在尝试从头开始创建一个新的pdf,但我似乎无法正确打印特殊字符,例如我尝试在PDF中打印以下字符串:
『I like 《this string》 yeah.』
并获取
þÿ0I like 0this string0 yeah.0
通过记录器和println正确打印结果,有人知道怎么做,已经尝试过ascii编码,如\ u008A。
有什么想法吗?
答案 0 :(得分:2)
现在可以使用PDFBOX打印utf-8字符。你需要下载(https://github.com/apache/pdfbox)最新的trunk版本并编译它(你可以使用maven编译它,这是最好的选择,相信我)。你需要的第二件事是一个ttf字体,它有你正在使用的glphys。
适用于我的代码:
package utftext;
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType0Font;
public class utftext {
public static void main(String[] args) throws Exception {
PDDocument document = new PDDocument();
PDPage page = new PDPage(PDRectangle.A4);
document.addPage(page);
PDType0Font font = PDType0Font.load(document, new File("E:\\arialuni.ttf"));
PDPageContentStream stream = new PDPageContentStream(document, page);
String text = "ssdfg #$%&&English 012 čćžšđ ČĆŽŠĐ as äöüÖÜÄ";
stream.beginText();
stream.setFont(font, 12);
stream.moveTextPositionByAmount(50, 600);
stream.drawString(text);
stream.endText();
stream.close();
document.save("type0.pdf");
document.close();
}
}