无法获得印度卢比符号显示在飞碟生成的PDF中

时间:2019-01-02 11:36:10

标签: pdf unicode utf-8 flying-saucer

我正在尝试几种不同的方法,但是我无法获得用飞碟生成的pdf(来自html文件)来显示印度卢比的Unicode字符-“₹”

这是我目前拥有的:

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

    <style>
      body {
        font-family: Arial Unicode MS, Lucida Sans Unicode, Arial, verdana, arial, helvetica, sans-serif;
      }      

      @font-face {
        font-family: 'Arial Unicode MS';
        src: url(arialunicodems.ttf);
        -fs-pdf-font-embed: embed;
        -fs-pdf-font-encoding: UTF-8;
        -fs-pdf-font-encoding: Identity-H;
        font-weight: normal;
      }

    </style>

  </head>
  <body>

    <p>We want to see a Indian Rupees symbol between the asterisks on one or more of these lines, in the PDF (if any of the symbols make it through to the PDF then we're good):</p>
    <p>Using the glyph itself in the markup: * ₹ *</p>
    <p>Using &amp;#x20B9; in the markup: * &#x20B9; *</p>
    <p>Using &amp;#8377; in the markup: * &#8377; *</p>

  </body>
</html>

代表许多不同的实验,没有一个起作用。它所指的字体文件位于上述html文件版本的旁边。

字体本身似乎正在加载,因为pdf文件中的文本看起来像Arial。它只是缺少卢比符号。我不知道该怎么办-在浏览器中查看时,我正在提取Unicode字体,并且html文件本身看起来还不错。当我用铬打印时,它看起来也不错,所以问题肯定出在我想的飞碟上。

我正在如下使用飞碟:

/usr/bin/java -Djava.awt.headless=true -cp .:$FS_PATH/acts_as_flying_saucer/lib/java/bin:$FS_PATH/acts_as_flying_saucer/lib/java/jar/minium.jar:$FS_PATH/acts_as_flying_saucer/lib/java/jar/itext-paulo-155.jar:$FS_PATH/acts_as_flying_saucer/lib/java/jar/core-renderer.jar:$FS_PATH/acts_as_flying_saucer/lib/java/jar/java-getopt-1.0.13.jar Xhtml2Pdf /home/max/font_test.html /home/max/font_test.pdf

谁能看到我做错了什么吗?

1 个答案:

答案 0 :(得分:0)

我在这里回答自己的问题,以防其他人犯同样的错误。答案很简单-它不是字体!原来,“₹”符号仅在2010年发明,因此在很多Unicode字体文件中都没有出现,包括我使用的那个。

它在浏览器中起作用是因为浏览器(Chrome)会自动以其他字符集查找它(我没有明确要求它),并在Deja Vu Sans中找到了它(Linux Chromium的后备)。

我更改了代码以使用较旧的(但仍可接受)“₨”符号,但更适当的解决方法是包括实际上具有现代卢比符号的字体。