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

使用FlyingSaucer将包含阿拉伯字符的HTML页面转换为PDF

蓬思博
2023-03-14

我想使用FlyingSaucer将一个包含阿拉伯字符的HTML页面转换为PDF文件,但生成的PDF不包含组合字符,并向后打印输出。

HTML:

null

<?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>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>

    <body style="font-size:15px;font-family: Arial Unicode MS;">

        <center  style="font-size: 18px; font-family: Arial Unicode MS;">
            <b>
                <i style="font-family: Arial Unicode MS;">
                    &#x062C;&#x0645;&#x064A;&#x0639; &#x0627;&#x0644;&#x062D;&#x0642;&#x0648;&#x0642;<br />
                </i>
            </b>
        </center>
    </body>
</html>

null

Java摘录:

String inputFile = "c:\\html.html";
        String url = new File(inputFile).toURI().toURL().toString();
        String outputFile = "c:\\html.pdf";
        OutputStream os = new FileOutputStream(outputFile);

        ITextRenderer renderer = new ITextRenderer();
        renderer.getFontResolver().addFont("c://ARIALUNI.TTF", BaseFont.IDENTITY_H,BaseFont.EMBEDDED);

        renderer.setDocument(url);
        renderer.layout();
        renderer.createPDF(os);
        os.close();

我怎样做才能得到正确的结果?

共有2个答案

沈自珍
2023-03-14

是的,它与RTL相关,但如果你没有选择与字体相关,那么你可以使用Arial字体,它有你所需要的所有字符。请单击此链接https://stackoverflow.com/A/47801584/3335776查看代码。

飞碟默认字体的一些问题

您可以在这里找到完整的文章

潘胤
2023-03-14

当我使用阿拉伯字体时,我面临类似的对齐问题。阿拉伯语是RTL语言。您需要特定的JAR来生成RTL语言的PDF。当前,当您正在尝试生成PDF时,模式是正常的LTR,因此您正在获得当前输出。

 类似资料:
  • 我有一本字典,里面有阿拉伯语单词,比如 输出: 我不想在创建数据时对阿拉伯语文本进行编码。json文件。如果我不使用json。转储,然后它工作正常,但它显示单引号'而不是双qoute“

  • 当我使用ITextRenderer将html转换为PDF时,这是我的代码 阿拉伯语连字怎么做?

  • 我正在尝试使用最新的雅虎天气apihttps://weather-ydn-yql.media.yahoo.com/forecastrss它工作得很好,但当我设置语言(lang=ar AE)时,它返回带问号的json响应,而不是阿拉伯字符。例如“城市”:“城市”对于英语来说,这是可以的。 我没看到留档里有关于utf设置的东西 当我打开雅虎的天气页面https://www.yahoo.com/news

  • 我在Swift中遇到了一个印地语数字集整数值的问题 这是关于我们如何将印地语转换成英语的任意数值。 想知道如何将一种语言的数字转换成另一种语言的数字吗 例如:试图将印地语数字转换为阿拉伯语 这是我在操场上试过的代码: 这是它仅以英文显示的输出 我已经搜索了这个问题,但没有找到这种具体的解决方案,所以发布了一个新的问题。 注意:不寻找任何静态转换扩展或此类函数。 编辑:我不想要这种解决方案 在Swi

  • 问题内容: 我想将 包含英文数字的a转换为阿拉伯数字,所以我将其转换为 输出 还有另一种更有效的方法吗? 问题答案: 这使字符串长度为3036的版本比原来的版本提高5倍。这还会检查以确保您只更改数字。如果不执行if / else检查,则速度大约是6倍。 如果字符不正确/放错了位置,请原谅我。我不得不从另一个来源找到其中一些。

  • 问题内容: 我从HTML页面中将一个字符串输入到Java HTTPServlet中。根据我的要求,我得到了显示汉字的ASCII码: “&#21487;&#20197;&#21578;&#35785;&#25105;” (无空格) 如何将该字符串转换为Unicode? HTML代码: Java代码: 如果我打印问题[0],则会得到以下值:“&#21487;&#20197;&#21578;&#3578