我正在使用pdfbox 2.0.26将pdf转换为图像.Maven依赖项如下所示.

        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>fontbox</artifactId>
            <version>2.0.26</version>
        </dependency>

        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox</artifactId>
            <version>2.0.26</version>
        </dependency>

我写的程序就像

        FileInputStream fin = new FileInputStream("/path/to/sample.pdf");
        try(final PDDocument doc = PDDocument.load(fin)){

            PDFRenderer pdfRenderer = new PDFRenderer((doc));

            BufferedImage bim = pdfRenderer.renderImageWithDPI(0, 300, ImageType.RGB);
            File myObj = new File("/path/to/sample.png");
            FileOutputStream fos = new FileOutputStream(myObj);
            ImageIOUtil.writeImage(bim, "png", fos);
            fin.close();
            fos.close();

        } catch (IOException e) {
            System.out.println("error");
        }

它在我的MacOS上运行得很好(尽管图像中的字体与PDF中的字体不同),但当我在Linux服务器上运行它时,中文字符会丢失.

The source PDF file can be found here the source file. I detected the font using adobe reader, the result are pasted as following. enter image description here

The resulting image file is like: enter image description here

我该怎么做才能解决这个问题呢?谢谢

推荐答案

多亏了Tilman Hausherr的建议,我意识到当指定的字体不可用时,"PDFBox将try 找到接近的字体".我的问题是,PDFBox找不到一个足够接近的字体来识别pdf文件上的字体.在我上传了一些中文字体到服务器上之后(对于Linux操作系统,这些字体被复制到/usr/Share/Fonts),这个问题就解决了.我使用的字体属于我工作的公司,但我相信像SimSun这样的字体也会起作用,试一试就知道了.

Java相关问答推荐

通过推送通知向自己发送Matrix消息

如何使用CSS为选定但未聚焦的表格行设置背景 colored颜色 ?

Java中不同包中的类之间的配置共享

有关手动创建的包的问题

通过合并Akka Streams中的多个慢源保持订购

Java中实现的归并排序算法给出ArrayIndexOutOfBound异常

为什么在maven中,getLast方法不适用于List?

在Spring Boot中使用哪个Java类来存储创建时间戳?

我正在try 跟踪数组中最大的两个数字

多重延迟签名

测试何时使用Mockito强制转换对象会导致ClassCastException

如何在Spring Java中从数据库列中获取JSON中的具体数据

解析方法";javax/imageio/metadata/IIOMetadata.getAsTree(Ljava/lang/String;)Lorg/w3c/dom/Node时加载约束冲突

将JSON字符串转换为Java类

如何在ImageIO或十二只猴子中旋转TIFF CMYK图像?

对角线填充二维数组

如何在Java中使用正则表达式拆分字符串

RestTemplate Bean提供OkHttp3ClientHttpRequestFactory不支持Spring Boot 3中的请求正文缓冲

如何在Spring Boot中为不同的部署环境管理多个.properties文件?

Cucumber java-maven-示例表-未定义一步