我正在尝试从头开始创建一个新的 pdf,但我似乎无法正确打印特殊字符,例如我尝试在 PDF 中打印以下字符串:
『I like 《this string》 yeah.』
并得到
þÿ0I like 0this string0 yeah.0
结果通过记录器和 println 正确打印,有人知道怎么做吗,已经尝试过像\u008A 这样的 ascii 编码。
有什么想法吗?
最佳答案
现在可以使用 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();
}
}
关于java - 如何在 PDF 上打印不常见的字符(使用 pdfbox),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27594855/