避免在pdflib 8中无法正常工作

时间:2015-05-07 11:07:24

标签: unicode encoding character-encoding pdflib

我有一个文字," Versicherungs-Lebenslagen "应该只在连字符处打破。这有效,但如果有足够的空间,世界 Lebenslagen 应该保持在同一条线上。
在我的图片中,有一个词在下一行。

avoid linebreaking with pdflib

我在API DOC, page 86中读到的pdflib代码是:

haben wir Services für alle <avoidbreak=true>„Versicherungs<avoidbreak=false>-<avoidbreak=true>Lebenslagen“<avoidbreak=false> eingerichtet:

我还使用了标记<avoidbreak><noavoidbreak>,因为我已在java examples for pdflib 9

中阅读了该标记
haben wir Services für alle <avoidbreak>„Versicherungs<noavoidbreak>-<avoidbreak>Lebenslagen“<noavoidbreak> eingerichtet:

任何人都知道这个问题吗?

1 个答案:

答案 0 :(得分:1)

我想,这与您使用的特殊引号有关。 “(Unicode U+201C)被定义为开场/左侧角色。因此,文本流换行算法不会在之后直接中断。

当您重新定义此字符的字符类时,可以解决此问题。

tf = p.create_textflow("haben wir Services f&uuml;r alle 
        <avoidbreak=true>&#x201E;Versicherungs<avoidbreak=false>-
        <avoidbreak=true>Lebenslagen&#x201c;<avoidbreak=false> eingerichtet:", 
    "fontname Arial encoding=unicode fontsize=20 charref 
        charclass={ close U+201C open U+201E}");
p.fit_textflow(tf, 50, 500, 350, 700, "showborder");

(你应该直接在hello.java样本中使用这段代码)

另请参阅PDFlib 8教程,章节8.2.8和#34;控制标准的换行算法&#34;有关此问题的进一步详情。