我使用 Jsoup 和OpenHTMLToPDF从 HTML 创建了一个 PDF 。我必须在我的 PDF 中使用不同的字体才能覆盖非拉丁字形(请参阅此处)。如何正确嵌入我的字体?
src/main/resources/test.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Font Test</title>
<style>
@font-face {
font-family: 'source-sans';
font-style: normal;
font-weight: 400;
src: url(fonts/SourceSansPro-Regular.ttf);
}
</style>
</head>
<body>
<p style="font-family: 'source-sans',serif">Latin Script</p>
<p style="font-family: 'source-sans',serif">????? ???????? ???????.</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
src/main/java/main.java:
import com.openhtmltopdf.extend.FSSupplier;
import com.openhtmltopdf.pdfboxout.PdfRendererBuilder;
import org.jsoup.Jsoup;
import org.jsoup.helper.W3CDom;
import org.w3c.dom.Document;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.Objects;
public class main {
public static void main(String[] …Run Code Online (Sandbox Code Playgroud) 我正在使用openhtmltopdf将 html 转换为 pdf。目前,如果 html 包含德语字符,例如 \xc3\xa4、\xc3\xb6、\xc3\xbc,我会遇到异常。
\n\n PdfRendererBuilder builder = new PdfRendererBuilder();\n builder.useFastMode();\n builder.withHtmlContent(html,"file://localhost/");\n builder.toStream(out);\n builder.run();\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\norg.xml.sax.SAXParseException; 行号:17;列数:31;实体“auml”已被引用,但未声明。
\n
这是我的html:
\n\n<html>\n <head> \n <meta charset="UTF-8" />\n </head>\n <body>\n käse\n </body>\n</html>\nRun Code Online (Sandbox Code Playgroud)\n\n导出的单词是“k\xc3\xa4se”(奶酪)。
\n\n更新
\n\n我尝试过使用实体解析器,如下所示:
\n\n DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();\n DocumentBuilder builder=null;\n try{\n builder=factory.newDocumentBuilder();\n\n ByteArrayInputStream input=new ByteArrayInputStream(html.getBytes("UTF-8"));\n builder.setEntityResolver(FSEntityResolver.instance());\n org.w3c.dom.Document doc=builder.parse(input);\n\n\n }catch(Exception e){\n logger.error(e.getMessage(),e);\n }\nRun Code Online (Sandbox Code Playgroud)\n\n但我在“解析”时仍然遇到相同的异常。
\n我有这个 PDF 文件,我用OpenHTMLtoPDF.
string html = "<html><body><h1>TEST</h1></body></html>";
var pdf = Pdf.From(html).OfSize(size);
byte[] content = pdf.Content();
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何将其保存到磁盘。似乎没有保存到硬盘的方法。