PDFLib(PHP) - 不显示的字符

时间:2015-09-01 15:20:18

标签: php unicode char pdf-generation pdflib

我们使用PDFlib(不确定确切的版本,应该是最近版本)并且我试图使用BCW Code 128 3(非A,B或C,但标准)使用我们所拥有的相同公式显示条形码在一个旧的Crystal Reports 8.0公式(正确显示)中,它以字符#205开头,以字符#206结束。

问题是条形码根本没有出现,但是当我使用默认字体设置到另一个另一个Textflow字段时,字符串也不显示,所以它可能是一些转义问题或类似的东西。我已经尝试过改变" escapesequence"和" charref"价值无济于事。

条形码将显示(现在它已设置为Unicode)标准字符,例如" 111111111",但是当像chr(205)这样的字符显示时,它什么都不显示。

有什么想法吗?

谢谢!

$p = new PDFlib();

$p->set_option("errorpolicy=return");
$p->set_option("stringformat=utf8");

$p->begin_document("", "");
$doc = $p->open_pdi_document("/usr/local/PDFlib/templates/CertifiedMail.pdf", "");
$page = $p->open_pdi_page($doc, 1, "");

if ($page == 0) throw new Exception("Error: " . $p->get_errmsg());

$p->begin_page_ext(0, 0, "width=letter.width height=letter.height");

$p->fit_pdi_page($page, 0, 0, "");

$sText = chr(205).chr(103).chr(122).chr(232).chr(38).chr(96).chr(42).chr(232).chr(108).chr(115).chr(76).chr(206);

$p->fill_textblock($page, "sReturnAddress", $sText,  "encoding winansi");
$p->fill_textblock($page, "uniBarcode", $sText,  "encoding unicode");

$p->close_pdi_page($page);

$p->end_page_ext("");

$p->end_document("");

$buf = $p->get_buffer();
$len = strlen($buf);

header("Content-type: application/pdf");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=font_resource.pdf");
print $buf;

1 个答案:

答案 0 :(得分:0)

  

我们使用PDFlib(不确定确切的版本,应该是最近的)

您可以通过检查phpinfo()输出来确定这一点。

我建议嵌入字体,这种字体总是推荐用于自定义字体,比如条形码字体。 (否则必须在您查看PDF的系统上安装该字体)。在fill_textblock()选项列表中使用“embedding”选项。否则在load_font()选项列表中。

潜在的附加问题,当你的代码是符号字体时,你有 使用编码“ builtin ”加载字体。然后你必须通过代码点解决字形,而不是通过Unicode字符串。有关更多背景信息,请参阅PDFlib 9教程,第5.4.2章“选择符号字体的编码”和5.4.3“示例:从Wingdings符号字体中选择字形”。

我相信,对于更详细的帮助,来自PDFlib的人会给你一个适当的帮助。然后,您还可以分享您的资源等。http://www.pdflib.com/licensing-support/opening-a-support-case/