java - 如何在 PDF 上打印不常见的字符(使用 pdfbox)

标签 java encode pdfbox

我正在尝试从头开始创建一个新的 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/

相关文章:

java - 如何使用 PDFBox api 在 PDF 表单字段中设置签名

java - PDFBox : Maintaining PDF structure when extracting text

java - 出现 "No services have been found."错误

Python Opencv 和 Sockets - 以 h264 编码的流视频

java - 通过页面搜索已使用的资源并将其删除

python - 从字符串中删除每个非 utf-8 符号

amazon-web-services - 对来自 API 网关的查询参数进行编码

java - 无法使用带有 % 或 * 的 LIKE 搜索 MS Access 数据库

java - Play 框架调用 render() 方法时出现问题

java - 混合(Scala/Java)项目的单一文档?