Apache FOP(XML)中SVG中的Unicode(西里尔字母)文本

时间:2019-05-15 16:55:47

标签: unicode apache-fop

(我不知道我使用的是哪个FOP版本。我仅对该服务具有API / HTTP访问权限。)

我正在使用Apache FOP制作PDF。它包含带有<text>的SVG。 SVG内部和外部都有一些保加利亚/西里尔文字。

在网络浏览器中,保加利亚语不需要编码:

  • <table>中:<td class="label">Спортуване</td>
  • <svg>中:<text x="153" y="91">Спортуване</text>

在Apache FOP输入XML中,它需要编码:

  • 外部SVG:<fop:block>&#1057;&#1087;&#1086;&#1088;&#1090;&#1091;&#1074;&#1072;&#1085;&#1077;</fop:block>
    • 每个字符都编码为&#0000;
    • 可行,外部 SVG
  • 内部SVG:<svg:text x="153" y="91" >&#1057;&#1087;&#1086;&#1088;&#1090;&#1091;&#1074;&#1072;&#1085;&#1077;</svg:text>
    • (本地名称空间为svg
    • 相同的编码
    • 不起作用=(

因此,唯一无效的部分是SVG中的文本。外面的文字效果很好。

不是字体。我可以将内部和外部SVG字体更改为Timesthe default),新字体也会发生同样的情况:可以在SVG外部使用,而不能在内部。

Web浏览器结果:

SVG in web browser

PDF结果:

SVG in PDF

PDF,SVG之外:

Non-SVG in PDF

我的美学特殊拼写(aëstéthics)在PDF SVG中可以使用。由于某些字符是安全的ASCII:<svg:text x="436" y="218">a&#235;st&#233;thics</svg:text>,因此仅部分编码。 &#1234;编码的字符可以正常工作,就像它们在SVG以外的西里尔字母一样。

如何在FOP的SVG中添加Unicode <text>


同一服务器上CLI上的“新”版本(1.1):

没有字体配置,没有unicode起作用,所有文本均为#####,在SVG内部和外部。

使用字体配置(从Windows复制的TTF字体):

fop -fo input.xml -c fop.conf.xml -pdf output-1.pdf

一系列警告:

  

Apache FOP尚未实现以下功能:table-layout =“ auto”(在fo:table上)(请参见位置29:34)

其中一些:

  

字形“И”(0x418,Iicyrillic)在字体“ Helvetica”中不可用。

但是结果非常不错。与0.9版相同。 SVG内部没有Unicode,但外部却可以。


Omg omg omg omg 2.1在另一台服务器上有效!

即使出现怪异的Java错误:

  

[警告] / usr / bin / fop:JVM风格的'sun'无法理解

如果正确的服务器上只有2.1版可用,并且具有http api acces ...

pdf output fop 2.1

0 个答案:

没有答案