2

我正在尝试使用 iText 和飞碟将 html 页面转换为 pdf。html页面的编码是

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"><head>
 <title>中文測試</title>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 <style type="text/css">
     name
     {
         font-family: "Arial Unicode MS";
         color: blue;
         font-size: 48;
     }
 </style>
</head>
<body>  
  <name>名偵探小怪獸</name>
     <h1>भारतीय जनता पार्टी ने फिर कहा है कि बहुमत न होने के कारण वो दिल्ली में सरकार बनाने की
         इच्छुक नहीं है और दोबारा चुनाव के लिए तैयार है.
    </h1>
 <h1>Japanese 日本国&lt;/h1>
</body>
</html>

和Java代码是

import java.io.*;
import org.xhtmlrenderer.pdf.*;
import com.lowagie.text.pdf.*;
public class ChineseToPdf {
    public static void main(String[] args) {
        try {
            String inputFile = "chinese.html";
            String url = new File(inputFile).toURI().toURL().toString();
            String outputFile = "test.pdf";
            OutputStream os = new FileOutputStream(outputFile);
            ITextRenderer renderer = new ITextRenderer();
            ITextFontResolver resolver = renderer.getFontResolver();
            resolver.addFont("C:/Windows/Fonts/arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
            renderer.setDocument(url);
            renderer.layout();
            renderer.createPDF(os);
            os.close();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

并且在输出中只有中文字体被正确渲染,印地语和日语作为空白。

请帮帮我。

4

2 回答 2

2

您定义的样式仅适用于 tag name,印地语和日文文本在此标记之外。它使用默认字体呈现,不支持所有 unicode 字符。

要修复此错误,您可以更改样式以对所有文档使用字体“Arial Unicode MS”:

body{font-family: "Arial Unicode MS";}
于 2013-12-10T17:32:51.150 回答
0

接受的答案确实有效。但还要指出一件事:

字体系列设置应以“Arial Unicode MS”开头。如果它以不支持 CJK 的字体开头,则输出 pdf 仍然不会显示这些字符。

于 2014-05-30T22:53:49.523 回答