2015-09-01 56 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/