我正在使用TCPDF庫導出音樂網站的專輯/目錄發佈信息,該專輯包含可能是英語/中文或任何其他語言的歌曲標籤,我遇到問題在tcpdf內正確打印非英文字符。我想說的一些觀點。使用TCPDF顯示非英文字符
- 我正在使用
zend framework 1.12
。 - 數據庫連接整理
utf8
。 - 表字段整理
utf8_unicode_ci
。
我的情景是,信息來自數據庫,我用一個視圖以HTML
以特定格式顯示與專輯有關的信息。發佈名稱是中文奧馬爾阿斯拉姆
,我試圖通過搜索與設置字體和更改字符排序規則有關的初始化TCPDF對象時的所有選項,但每當我打印它時都會顯示像這樣的名稱奥马å°Â」阿斯æ‹Â
我試過utf8_encode()
和utf8_decode()
周圍的發佈名稱內的HTML,但沒有什麼幫助。 另一個例子是使用拉丁字符,其中專輯的名稱是Extraña EP
,當在pdf中打印時,它顯示爲Extraña EP
。
這裏是我在我的視圖中使用的HTML。
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td align="left" valign="top">
<img src="/images/release_details.png">
</td>
</tr>
<tr>
<td align="left" valign="top">
<table width="100%" cellpadding="0" cellspacing="0" class="release_table">
<tr>
<td align="left" valign="top" class="label">CATALOG #:</td>
<td align="right" valign="top" class="data"><?= $this->release->Catalog ?></td>
</tr>
<tr>
<td align="left" valign="top" class="label">RELEASE NAME:</td>
<td align="right" valign="top" class="data"><?= $this->release->Name ?></td>
</tr>
<tr>
<td align="left" valign="top" class="label">RELEASE TYPE:</td>
<td align="right" valign="top" class="data"><?= $releaseType ?></td>
</tr>
<tr>
<td align="left" valign="top" class="label">UPC CODE:</td>
<td align="right" valign="top" class="data"><?= $this->release->UPCCode ?></td>
</tr>
<tr>
<td align="left" valign="top" class="label">NUMBER OF SONGS:</td>
<td align="right" valign="top" class="data"><?= $this->release->TracksQty ?></td>
</tr>
<tr>
<td align="left" valign="top" class="label">PRIMARY ARTIST:</td>
<td align="right" valign="top"
class="data"><?= $this->release->PrimaryArtist ?></td>
</tr>
<tr>
<td align="left" valign="top" class="label">LABEL:</td>
<td align="right" valign="top" class="data"><?= $this->release->LabelName ?></td>
</tr>
<tr>
<td align="left" valign="top" class="label">MAIN GENRE:</td>
<td align="right" valign="top" class="data"><?= $this->release->MainGenre ?></td>
</tr>
<tr>
<td align="left" valign="top" class="label">GENRE:</td>
<td align="right" valign="top" class="data"><?= $this->release->Genre ?></td>
</tr>
<tr>
<td align="left" valign="top" class="label">(C):</td>
<td align="right" valign="top"
class="data"><?= $this->release->CLine . " " . $this->release->CYear ?></td>
</tr>
<tr>
<td align="left" valign="top" class="label">(P):</td>
<td align="right" valign="top"
class="data"><?= $this->release->PLine . " " . $this->release->PYear ?></td>
</tr>
<?php if ($this->release->Howlong > 0 && $this->release->EffectiveDate > 0) { ?>
<tr>
<td align="left" valign="top" class="label">EXCLUSIVE DATE:</td>
<td align="right" valign="top"
class="data"><?= $this->release->EffectiveDate ?></td>
</tr>
<?php } ?>
<tr>
<td align="left" valign="top" class="label">RELEASE DATE:</td>
<td align="right" valign="top" class="data"><?= $this->release->ReleaseDate ?></td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center" valign="middle"> </td>
</tr>
<tr>
<td align="center" valign="middle">
<img src="/images/symphonic_logo.png"/>
</td>
</tr>
</table>
這裏是代碼,我發送內容打印在pdf中之前我稱之爲視圖。
require_once(APPLICATION_PATH . 'library/tcpdf/tcpdf.php');
$pdf = new TCPDF("L", "mm", "A4", FALSE, 'ISO-8859-1', false);
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->SetFont('helvetica', '', 11, '', true);
$pdf->SetMargins(1, -1, -1, false);
//$pdf->SetFont('dejavusans', '', 12);
//whole TCPDF's settings goes here
$this->view->songs = $releaseSongs;
$this->view->release = $releasInformation;
$htmlcontent = $this->view->render('exportpdf.phtml');
// output the HTML content
$pdf->AddPage();
$pdf->writeHTML($htmlcontent, true, false, true, false, '');
$pdf->lastPage();
$pdf->deletePage($pages + 1);
$pdf->Output($filename, 'D');
exit();
我在行#2上看到'ISO-8859-1' ... –
是啊,那是因爲我嘗試了不同的選項,並且已經嘗試了UTF-8選項,並使用'$ pdf = new TCPDF(「L」 ,「mm」,「A4」,TRUE,'UTF-8',false);'將'Extra'a EP'這個字符輸出爲'Extran?a EP'和'奧馬爾阿斯拉姆'作爲'???? ???'。 –