Php Pdflib:如何使用add_flowtext()创建落差上限

Php Pdflib:如何使用add_flowtext()创建落差上限,php,pdflib,Php,Pdflib,我把它改成使用add\u textflow()而不是create\u textflow(),但是我无法让它工作。它不是解释宏,而是将其写成纯文本。我做错了什么 从文档中,我了解到应该内联定义宏,还是我误解了它?我已经尝试了我能想到的一切 $tf=0; $optlist=“”; $llx=100$lly=50$urx=450$ury=800; $t_fontsize=16;//文本的字体大小 $t_前导=20;//正文的开头 $c_num=3;//落差盖要覆盖的管线数量 $c_textrese=-

我把它改成使用
add\u textflow()
而不是
create\u textflow()
,但是我无法让它工作。它不是解释宏,而是将其写成纯文本。我做错了什么

从文档中,我了解到应该内联定义宏,还是我误解了它?我已经尝试了我能想到的一切

$tf=0;
$optlist=“”;
$llx=100$lly=50$urx=450$ury=800;
$t_fontsize=16;//文本的字体大小
$t_前导=20;//正文的开头
$c_num=3;//落差盖要覆盖的管线数量
$c_textrese=-($c_num-1)*$t_leading);//落差上限的文本上升
$c_fontsize=-($c_textrese*1.8);//落差的字体大小
试一试{
$p=新的pdflib();
$p->set_选项(“errorpolicy=exception”);
$p->set_选项(“stringformat=utf8”);
$p->开始文档(“,”);
$optlist=“fontname=Helvetica fontsize=”.$t_fontsize.“encoding=unicode”;
$text=”“;
$text.=“越过山脉…”;
$tf=$p->add_textflow($tf,$text,$optlist);
$text=
“纸飞机是理想的飞行方式”。
“消磨时光,我们提供革命性的服务”。
“传统通信的新发展”。
“纸飞机。如果你的课程、会议或讲座”。
“结果是非常无聊,你可以玩得很开心”。
“用我们的飞机。”;
$tf=$p->add_textflow($tf,$text,$optlist);
做{
$p->begin_page_ext(0,0,“宽度=a4.width高度=a4.height”);
$result=$p->fit_textflow($tf、$llx、$lly、$urx、$ury,”);
$p->end\u page\u ext(“”);
}而($result==“|boxfull”|$result==“_nextpage”);
/*检查错误*/
如果(!$result==“\u stop”){
如果($result==“\u boxempty”)
抛出新异常(“错误:Textflow框太小”);
否则{
抛出新异常(“用户返回”。$result。
“‘在Textflow中找到’”;
}
}
$p->delete_textflow($tf);
$p->end_文件(“”);
$buf=$p->get_buffer();
$len=strlen($buf);
标题(“内容类型:application/pdf”);
标题(“内容长度:$len”);
标题(“内容配置:内联;文件名=drop_caps.pdf”);
打印$buf;
}捕获(PDFlibException$e){
die(“发生PDFlib异常:\n”。
“[”$e->get_errnum()。“]”$e->get_apiname()。
“:”$e->get_errmsg()。“\n”);
}捕获(例外$e){
死亡($e->getMessage());
}
$p=0;

这很简单:只有
create_texflow()
支持内联选项(因为必须在单个块中指定数据)。使用
add_textflow()
可以分多个步骤为每个文本片段“构建”textflow句柄,并使用相关选项

在您的情况下,它可能如下所示:

 $optlistmacro = " macro " .
"{cap_start {fontsize=" . $c_fontsize . " leading=" . $t_leading .
"            textrise=" . $c_textrise .
" matchbox={createwrapbox boxheight={leading textrise}}} " .
"cap_end {matchbox=end fontsize=" . $t_fontsize . " textrise=0}}";


$tf = $p->add_textflow($tf, "", $optlist . $optlistmacro);
$tf = $p->add_textflow($tf, "O", "&cap_start");
$tf = $p->add_textflow($tf, "ver the mountains... ", "&cap_end");
在这个代码片段中,我执行了第一个
add_textflow()
,没有文本,但所有 宏设置。然后将带有宏(
&cap\u start
)的“O”放在 选项列表。下面的文字“越过山脉…”已经完成
在下一个
add_textflow()
中,作为选项,我放置
&cap_end

啊,现在我得到了它。这样,您就不需要宏了,因为您也可以直接在调用中设置optlist。