PDFlib PHP 宏和内联优化列表

PDFlib PHP macros and inline optlists

我想在我的 PDFlib 脚本中使用宏和内联选项列表,它似乎可以工作,但是只要文本源中有“<”符号,我就会从 PDFlib 收到一条错误消息,说有一个未定义的宏。

假设我们有以下文本: $text = '<font='.$fontBold.'>Lorem ipsum<font='.$fontRegular.'> dolor sit amet &lt; 0,11m²';
如果我这样做,一切正常,文本将显示为:“Lorem Ipsum dolor sit amet < 0,11m²”

但是,一旦我将 &lt; 更改为相应的符号“<”,我就会收到错误 Unknown option '0,11' in ...,因为 PDFlib 认为在那里定义了一个新的宏。

有什么办法可以避免这种情况吗?因为显然我不想在我的文本中使用“<”。

其实很简单:

< 字符默认是 create_textflow 中内联选项的起始字符。如果你现在想把这些字符输出为文本,这自然会导致冲突,你可以这样解决:

  • 您可以将 < 字符指定为字符引用。为此,必须设置选项 charref=true 并在文本中指定 &lt;.
  • 您使用另一个字符作为开始或结束文本流字符并定义 begoptlistcharendoptlistchar
  • 您不使用内联选项,那么您可以使用一个或多个 add_textflow() 调用 assemble 文本流句柄。

请参考 PDFlib 教程,第 9.2.2 章“9.2.3 内联选项列表和宏”:

The characters for bracketing option lists can be redefined with the begoptlistchar and endoptlistchar options. Supplying the keyword none for the begoptlistchar option completely disables the search for option lists. This is useful if the text doesn’t contain any inline option lists, and you want to make sure that »<« and »>« will be processed as regular characters.