簡體   English   中英

pdfbox:將 pdf 轉換為圖像時如何解決字體(STSong-Light)問題?

[英]pdfbox: how to solve font (STSong-Light) problem when converting pdf to image?

我正在使用 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 上運行良好(雖然圖片中的 fonts 與 pdf 中的不同),但是當我在 linux 服務器上運行時,中文字符丟失了。

源文件 PDF 可以在這里找到源文件 我使用 adobe reader 檢測到字體,結果粘貼如下。 在此處輸入圖像描述

生成的圖像文件如下: 在此處輸入圖像描述

我該怎么做才能解決問題? 謝謝

感謝 Tilman Hausherr 的建議,我意識到當指定的 fonts 不可用時,“PDFBox 將嘗試找到一個接近的”。 我的問題是 PDFBox 未能找到足夠接近以識別 pdf 文件上的字體的字體。 在我上傳一些中文 fonts 到服務器后(對於 linux 操作系統,fonts 被復制到 /usr/share/fonts),問題解決了我使用的字體類型是我公司的,但我相信SimSun之類的fonts也可以,試試看吧。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM