在 Android 上使用 iText 将 HTML 转换为 PDF。如何设置 UTF-8(变音符号)?

Eri*_*rik 5 java pdf android itext

我正在尝试以下

itextg 5.5.3 罐子

xmlworker 5.5.3 jar


测试.html

<html xmlns="http://www.w3.org/1999/xhtml" lang="cs">
<head>
</head>
<body>
Test: ?š??žýáíé ? ? ? ?

<div style="font-family: 'Times New Roman',font-weight: bold,backround-color blue;">
  Test: ?š??žýáíé ? ? ? ?
</div>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

转换HTML到PDF.java

public class ConvertHTMLToPDF {

    public static final String RESULT = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Notes/test.pdf";
    public static final String RESORCE = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Notes/html/test.html";


        void convertHTMLToPDF() throws IOException, DocumentException {

            Rectangle pagesize = new Rectangle(415,1750);
            Document document = new Document(pagesize);

            PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT));

            document.open();

            XMLWorkerHelper.getInstance().parseXHtml(writer, document, new FileInputStream(RESORCE));

            document.close();
            System.out.println( "PDF Created!" );
        }
    }
Run Code Online (Sandbox Code Playgroud)

输出测试.pdf

  • 测试:šžýáíé

  • 测试:šžýáíé


如何获得测试.pdf

 Test: ?š??žýáíé ? ? ? ?
 Test: ?š??žýáíé ? ? ? ?
Run Code Online (Sandbox Code Playgroud)

Bru*_*gie -1

请查看 XML Worker 示例:http://itextpdf.com/sandbox/xmlworker/

示例 1: D07_ParseHtmlAsian

告诉该parseHtml()方法您正在以 UTF-8 格式读取 XML:

XMLWorkerHelper.getInstance().parseXHtml(writer, document,
    new FileInputStream(HTML), Charset.forName("UTF-8"));
Run Code Online (Sandbox Code Playgroud)

示例 2: D07bis_ParseHtmlAsian

告诉该parse()方法您正在以 UTF-8 格式读取 XML:

XMLWorker worker = new XMLWorker(css, true);
XMLParser p = new XMLParser(worker);
p.parse(new FileInputStream(HTML), Charset.forName("UTF-8"));
Run Code Online (Sandbox Code Playgroud)

请注意,当您想要控制用于输出 PDF 的字体时,您会更喜欢这种方式而不是示例 1。请与D07tris_ParseHtmlAsian进行比较。