Простой способ отображения символа валюты в html2pdf для iText 7 - PullRequest
0 голосов
/ 03 октября 2019

Я обновил свой код с iText 5.0 до iText 7 и html2pdf 2.0 согласно этой записи. В более ранней версии символ рупии рендерился правильно, но из-за проблемы css я изменил код. Теперь полная страница конвертируется должным образом в pdf, кроме символа рупии.

  1. Попытка добавления шрифта к самому тегу стиля html как * { font-family: Arial; }.
  2. Изменено значение символа рупии с &#x20b9, ₹, а также добавлено непосредственно ₹, но без использования.

Мой 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 за один раз, поэтому производительность не должна влиять. Пожалуйста, дайте мне знать, если кто-то достиг этого через последнюю версию.

Редактировать: Также, как установить определенный тип бумаги в этом как A6, A3, A4 и т. Д.

1 Ответ

1 голос
/ 03 октября 2019

Надеюсь, ты не злишься, потому что у меня нет репутации писать простые комментарии ... поэтому вместо этого я выложу полный ответ. Я анализирую HTML для своей работы и иногда читаю ТАК. По теме UTF-8 здесь много всего. Большинство программных систем поддерживают коды «больше чем символ # 256» (UTF-8) - например, символ индийской рупии. Однако в большинстве случаев программист должен явно указывать конкретный запрос на такое желаемое поведение.

Например, в HTML - добавление этой строки обычно помогает:

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

В любом случаене используя HTMLToPDF - я, возможно, не тот человек, который будет публиковать ответы на ваши вопросы - но, поскольку я имел дело с символами UTF-8 на иностранных языках в течение трех лет, я знаю, что настройка программного обеспечения для обработки 65 000 или около тогоchars обычно ОЧЕНЬ ПРОСТО, НО ТАКЖЕ ВСЕГДА ОЧЕНЬ ОБЯЗАТЕЛЬНО.

Вот ТАКОЕ сообщение об использовании HTMLToPDF и UTF-8 для обработки символов японского кандзи. Скорее всего, он должен обрабатывать все UTF-8, но это не гарантия.

Поддержка HTML2PDF для японского языка (utf8) не работает

Вотнесколько сообщений об этом с использованием HTML2PDF в PHP:

Преобразование HTML 2 PDF (PHP) с использованием иврита возвращает «???»

Наличие символов в HTML2PDFкодировок

...