当前位置: 首页 > 知识库问答 >
问题:

使用ITextRenderer将html转换为PDF的阿拉伯文问题

满俊楠
2023-03-14

当我使用ITextRenderer将html转换为PDF时,这是我的代码

ByteArrayOutputStream out = new ByteArrayOutputStream();

ITextRenderer renderer = new ITextRenderer();
String inputFile = "C://Users//Administrator//Desktop//aaa2.html";
String url = new File(inputFile).toURI().toURL().toString();
renderer.setDocument(url);
renderer.getSharedContext().setReplacedElementFactory(
        new B64ImgReplacedElementFactory());
    // 解决阿拉伯语问题
ITextFontResolver fontResolver = renderer.getFontResolver();
try {
    fontResolver.addFont("C://Users//Administrator//Desktop//arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
} catch (DocumentException e) {
    e.printStackTrace();
}

renderer.layout();
OutputStream outputStream = new FileOutputStream("C://Users//Administrator//Desktop//HTMLasPDF.pdf");
renderer.createPDF(outputStream, true);
/*PdfWriter writer = renderer.getWriter();

writer.open();
writer.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
OutputStream outputStream2 = new FileOutputStream(  "C://Users//Administrator//Desktop//HTMLasPDFcopy.txt");
renderer.createPDF(outputStream2);*/
renderer.finishPDF();
out.flush();
out.close();

阿拉伯语连字怎么做?

共有2个答案

胡曾笑
2023-03-14

希腊字符似乎被省略了;他们没有出现在文件里。

在飞碟中,生成的PDF使用某种默认(可能是Helvetica)字体,它包含非常有限的字符集,显然不包含希腊代码页。链接

骆利
2023-03-14

如果您想正确地执行此操作(我假设使用iText,因为您的帖子是这样标记的),您应该使用

  • iText7
  • PDFHTML(将HTML转换为PDF)
  • pdfcalligraph(正确处理阿拉伯文连字)
  • 支持这些功能的字体(如另一个答案所示)

关于一个例子,请参考HTML到PDF教程,更具体地说下面的FAQ项目:如何将包含阿拉伯语/希伯来语字符的HTML转换为PDF?

您需要包含所需字形的字体,例如:

public static final String[] FONTS = {
    "src/main/resources/fonts/noto/NotoSans-Regular.ttf",
    "src/main/resources/fonts/noto/NotoNaskhArabic-Regular.ttf",
    "src/main/resources/fonts/noto/NotoSansHebrew-Regular.ttf"
};

并且您需要一个FontProvider知道如何在ConverterProperties中查找这些字体:

public void createPdf(String src, String[] fonts, String dest) throws IOException {
    ConverterProperties properties = new ConverterProperties();
    FontProvider fontProvider = new DefaultFontProvider(false, false, false);
    for (String font : fonts) {
        FontProgram fontProgram = FontProgramFactory.createFont(font);
        fontProvider.addFont(fontProgram);
    }
    properties.setFontProvider(fontProvider);
    HtmlConverter.convertToPdf(new File(src), new File(dest), properties);
}

请注意,如果您没有pdfCalligraph加载项,文本将会出现所有错误。在创建飞碟的时候,这个附加组件还不存在,因此您不能使用飞碟转换带有阿拉伯语、印地语、泰卢固语、...如果您想了解更多关于连字的信息,请阅读pdFCalligraph白皮书。

 类似资料:
  • 我想使用FlyingSaucer将一个包含阿拉伯字符的HTML页面转换为PDF文件,但生成的PDF不包含组合字符,并向后打印输出。 HTML: null null Java摘录: 我怎样做才能得到正确的结果?

  • 问题内容: 我是一名PHP开发人员,在我的一个项目中,我需要将一些HTML文档(大约30至50页)转换为PDF文档。 我的搜索找到了以下可能的解决方案。其中包括一些PHP库和一些命令行应用程序。每种都有自己的优点和缺点。 PHP库: fpdf(需要更多的转换努力) tcpdf(需要更多的转换努力) html2fpdf http://html2fpdf.sourceforge.net html2pd

  • 问题内容: 按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我需要从现有的(X)HTML文档自动生成PDF文件。输入文件(报告)使用非常简单的基于表的布局,因此可能不需要支持真正精美的JavaScript / CSS。

  • 问题内容: 如何使用Python将PDF文件转换为HTML? 我只是在想Google会(或似乎会)对PDF文件建立索引的行为。 我的最终目标是设置Apache以显示PDF文件的HTML,因此,向该方向发展的任何事情也将不胜感激。 问题答案: 该poppler的包提供了一个实用PDF2HTML您可能能够使用。还有一个Python绑定到libpoppler。

  • 问题内容: 可以使用PHP将HTML页面转换为PDF吗?如果可以,该如何做? 具体而言,页面是动态生成的发票。所以我想使用以下命令加载它: 而且HTML输出必须转换为PDF。 任何好的库都可以。 问题答案: 如果您希望从php 创建 pdf,则pdflib将为您提供帮助(就像其他人建议的那样)。 否则,如果您想通过PHP 将 HTML页面 转换 为PDF,您将在这里发现一些麻烦。.3年以来,我一直

  • 我想用iText将带有图像的html文件转换成pdf格式。我在这里提供我的消息来源。 请帮助我如何使用iText将带有图像的html文件转换为pdf格式。如果没有图像或者硬编码图像路径,我可以转换html文件。提前致谢