java - 在 iText 7 的 html2pdf 中显示货币符号的简单方法

标签 java html css pdf html2pdf

我根据 this 将我的代码从 iText 5.0 更新到 iText 7html2pdf 2.0邮政。在早期版本中,卢比符号呈现正确,但由于 css 问题,我更改了代码。现在完整的页面正在正确转换为 pdf,除了卢比符号。

  1. 尝试在 html 样式标签中添加字体,例如 * { font-family: Arial;
  2. 更改了 中卢比符号的值,还直接添加了 ₹,但没有用。

我的 HTML:

<html>
<head>
<style>
* { font-family: Arial; }
</style>
<title>HTML div</title>
</head>
<body>
    <p style="margin-bottom: 0in; padding-left: 60px;">
    <div style="font-size: 450%; text-indent: 150px;">
        <strong>BUY <span style="color: #ff420e;">2</span> GET
        </strong>
    </div>
    </p>
    <div
        style="float: left; display: inline-block; margin: 10px; text-align: right; font-size: 70%; line-height: 27; transform: rotate(270deg);">Offer
        Expiry Date : 30/11/2017</Div>
    <div
        style="float: left; display: inline-block; margin: 10px; text-align: right; font-size: 350%;">
        ₹
        <!-- &#x20b9; -->
    </div>
    <div
        style="float: left; display: inline-block; margin: auto; font-size: 1500%; color: red; font-weight: bold;">99</div>
    <div
        style="float: left; display: inline-block; margin: 10px; text-align: left; font-size: 250%; line-height: 10;">OFF</div>
    <div
        style="position: absolute; height: 40px; font-size: 250%; line-height: 600px; color: red; text-indent: 50px">Pepsi
        2.25 Pet Bottle ltr</div>
    <div
        style="position: absolute; height: 40px; font-size: 245%; line-height: 694px; text-indent: 50px">
        MRP: &#x20b9; <span style="color: #ff420e;">654</span>
    </div>
</body>
</html>

Java 代码:

public class Test {

    final static String DEST = "D://Workspace_1574973//POP//sample_12.pdf";
    final static String SRC = "D://Workspace_1574973//POP//src//com//resources//test.html";

    public static void main(String[] args) throws Exception {
        createPdf(SRC, DEST);

    }

    public static void createPdf(String src, String dest) throws IOException {

        HtmlConverter.convertToPdf(new File(src), new File(dest));
    }

}

较早的代码,使用符号。

            log.info("Creating file start");
            OutputStream file = new FileOutputStream(new File("font_check.pdf"));
            Document document = new Document(PageSize.A4);
            PdfWriter writer = PdfWriter.getInstance(document, file);
            document.open();

            InputStream is = new ByteArrayInputStream(fileTemplate.getBytes());
            XMLWorkerHelper.getInstance().parseXHtml(writer, document, is);
            document.close();
            file.close();

            log.info("Creating file end");

有没有什么简单的方法可以用最少的优化代码来实现这个目标? 因为我必须一次性生成数千个 pdf,所以性能应该不会受到影响。 如果有人通过最新版本实现了这一点,请告诉我。

编辑:还有如何设置特定的纸张类型,如 A6A3A4

最佳答案

希望您不要生气,因为我没有写简单评论的名声……所以我会发布完整的答案。我为我的工作解析 HTML,有时我会阅读 SO。这里有很多关于 UTF-8 的主题。大多数软件系统都支持“大于 char #256”(UTF-8) 代码——例如印度卢比符号。但是,大多数时候,程序员必须明确地包含对此类所需行为的特定请求。

例如,在 HTML 中 - 添加此行通常会有所帮助:

String UTF8MetaTag = "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />";

无论如何,我没有使用过 HTMLToPDF - 我可能不是回答您问题的合适人选 - 但是,因为我已经处理 UTF-8 外语字符三年了,所以我知道设置一个软件设置来处理65,000 个左右的字符通常非常简单,但也总是非常强制。

这是一篇关于使用 HTMLToPDF 和 UTF-8 处理日文汉字字符的 SO 帖子。它很可能应该处理所有 UTF-8,但这并不能保证。

HTML2PDF support for japanese language(utf8) is not working

这里有一些关于在 PHP 中使用 HTML2PDF 的帖子:

Converting html 2 pdf (php) using hebrew returns "???"

Having æøå chars in HTML2PDF charset

关于java - 在 iText 7 的 html2pdf 中显示货币符号的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58219721/

相关文章:

java - 基于字符串加载图片

java - 在mockito中模拟方法返回空指针异常?

html - 无法定位在开发工具中工作的 CSS 选择器

html - 使多个图像覆盖整个视口(viewport),如 css 重复

javascript - 使用 Flexbox 时模拟 "Card Layout"

html - 缩放和保持比例

java - Mac 无法使用 gradle 解决依赖关系

java - Android 应用程序在访问本地主机时崩溃

javascript - 当更改类的代码遥不可及时,如何触发类更改事件

javascript - 展开折叠树