2015-09-01 51 views
0

我们使用PDFlib(不确定确切版本,应该是最近的),并且我试图使用BCW代码128 3(不是A,B或C,而是标准)使用我们在旧版Crystal Reports 8.0公式中的相同公式(它能正确显示),它以字符#205开头,以字符#206结尾。PDFLib(PHP) - 无法显示的字符

问题是根本没有出现条码,但是当我设置为另一个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; 

回答

0

我们使用的PDFlib(不知道确切的版本,应该是近期的)

你可以简单地确定这一点,通过检查你的phpinfo()输出。

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

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

我相信,如果需要进一步详细的帮助,PDFlib中的人员会给予您适当的帮助。那么你也可以分享你的资源等。http://www.pdflib.com/licensing-support/opening-a-support-case/