PHP中使用PDFlib创建Textflow时多段文本无自动换行问题求助
问题根因
PDFlib的add_textflow()方法默认会直接将新传入的文本追加到现有Textflow的末尾,不会自动插入换行、空格类的分隔符,所以你两次调用传入的两段文本会直接连在一起输出。
解决方案
你可以从以下几个方案里选符合你需求的:
- 方案1:简单追加换行
如果只需要两段换行、不需要额外段落格式,直接在第二段文本前拼接换行符或者PDFlib内置的<nextline>指令即可,修改第二次调用add_textflow()的代码:// 注意如果你的Textflow开启了转义,用<nextline>兼容性更好,否则直接加\n也可 $tf = $p->add_textflow($tf, "<nextline>" . $secondParagraph, $optlist); - 方案2:带段落格式的分隔
如果需要设置段间距、段首缩进等段落属性,可以用PDFlib的<para>指令,示例:// leading设置段内行高,indent设置段首缩进距离,parindent也可以设置首行缩进 $tf = $p->add_textflow($tf, "<para leading=12 indent=20>" . $secondParagraph, $optlist); - 方案3:合并单次调用(适合段落不多的场景)
你也可以直接把两段文本合并后单次调用add_textflow(),中间加换行:$allText = $firstParagraph . "\n" . $secondParagraph; $tf = $p->add_textflow(0, $allText, $optlist);
小提示:如果
<nextline>、<para>这类指令没有生效,检查你的optlist里是否设置了escape=false,关闭转义的情况下直接使用\n作为换行符即可。
额外注意
你代码里的段落变量名$firstParaqraph、$secondParaqraph拼写有误,正确拼写是$firstParagraph、$secondParagraph,避免后续调用出现变量未定义的问题。
内容的提问来源于stack exchange,提问作者strayed soul
相关产品推荐
相关产品推荐

