Java讀取pdf中文

直接使用系統字體讀取或創建帶中文的pdf,需要注意jar的版本。

        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.8</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf.tool</groupId>
            <artifactId>xmlworker</artifactId>
            <version>5.5.6</version>
        </dependency>

代碼如下,覆寫XMLWorkerFontProvider$getFont即可讀取中文

    public void createPdf(String src, String dest) throws IOException, DocumentException {
        Document document = new Document();
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest));
        document.open();
        XMLWorkerHelper.getInstance().parseXHtml(writer, document, new FileInputStream(src), null, new XMLWorkerFontProvider(){

            public Font getFont(final String fontname, final String encoding,  
                    final boolean embedded, final float size, final int style,  
                    final BaseColor color) {  
                BaseFont bf = null;  
                try {  
                    bf = BaseFont.createFont("C:/Windows/Fonts/SIMYOU.TTF",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED); 
                } catch (Exception e) {  
                    e.printStackTrace();  
                }  
                Font font = new Font(bf, size, style, color);  
                font.setColor(color);  
                return font;  
            }  

        });
        document.close();
    }

創建時,使用系統(windows下)的字體即可

    BaseFont baseFont = BaseFont.createFont("C:/Windows/Fonts/SIMYOU.TTF",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);     
        Font font = new Font(baseFont); 
發佈了49 篇原創文章 · 獲贊 16 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章