gpt4 book ai didi

java - 使用 Flying Saucer +iText 从具有多语言文本的 HTML 生成 PDF,只有中文字体有效

转载 作者:行者123 更新时间:2023-11-30 09:14:26 76 4
gpt4 key购买 nike

我正在尝试使用 iText 和 Flying Saucer 将 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 日本国</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());
}
}
}

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

请帮帮我。

最佳答案

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

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

body{font-family: "Arial Unicode MS";}

关于java - 使用 Flying Saucer +iText 从具有多语言文本的 HTML 生成 PDF,只有中文字体有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20497814/

76 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com