【发布时间】:2018-08-10 22:54:43
【问题描述】:
我正在尝试使用 tFPDF 库在 PHP 中生成 PDF 文件。我从 FPDF 开始,它工作得很好,只是 UTF-8 字符是乱码。经过一番搜索,我发现可以实现 tFPDF 以在 PDF 文件中包含 UTF-8 字符。但是我所有的尝试都导致了一个无法打开的空文件——0 KB 文件写入我的硬盘驱动器,并且当我双击它时出现“文件格式有问题”消息。这是我的代码。我在错误日志中没有收到任何 PHP 错误,因此很难判断出了什么问题。
protected function getPDFFileData($diagnosis_id)
{
define('FPDF_FONTPATH', JPATH_COMPONENT.'/helpers/font/');
require_once JPATH_COMPONENT.'/helpers/tfpdf.php';
//require_once JPATH_COMPONENT.'/helpers/fpdf.php';
$item = $this->getItem($diagnosis_id);
$pdf = new tFPDF('P', 'mm', 'Letter');
//$pdf = new FPDF('P', 'mm', 'Letter');
$pdf->AddPage();
$fontname = "dejavusans";
$pdf->AddFont($fontname, '', 'DejaVuSans.ttf', true);
$pdf->AddFont($fontname, 'B', 'DejaVuSans-Bold.ttf', true);
$pdf->AddFont($fontname, 'I', 'DejaVuSans-Oblique.ttf', true);
$pdf->SetFont($fontname, '', 10);
/* $fontname = "helvetica";
$pdf->AddFont($fontname, '', 'helvetica.php');
$pdf->AddFont($fontname, 'B', 'helveticab.php');
$pdf->AddFont($fontname, 'I', 'helveticai.php');
$pdf->SetFont($fontname, '', 10); */
$domain_header = "Domain".chr(160).($item->ordinal).".".chr(160).($item->domain_label);
$pdf->Cell(90, 6, $domain_header, 0, 0, 'L');
$class_header = "Class".chr(160).($item->domain_class_ordinal).".".chr(160).($item->class_label);
$pdf->Cell(90, 6, $class_header, 0, 1, 'R');
$pdf->Ln();
$pdf->SetFont($fontname, '', 10);
$domain_class_info = "Domain".chr(160).($item->ordinal).chr(160).chr(183).chr(160)."Class".chr(160).($item->domain_class_ordinal).chr(160).chr(183).chr(160)."Diagnosis Code".chr(160).($item->diagnosis_code);
$pdf->Cell(40, 6, $domain_class_info);
$pdf->Ln();
$pdf->SetFont($fontname, '', 14);
$pdf->Cell(40, 8, $item->diagnosis_label);
$pdf->Ln();
// More code that generates more text . . .
return $pdf->Output('S');
}
【问题讨论】:
-
你的库是:fpdf.org?
-
不,我使用的是 tfpdf,这是一个基于原始 fpdf 的库,允许使用 utf-8 字符。
-
你能给我链接吗?
-
查看我的更新答案。