0

起初我认为 TCPDF 的 GetStringWidth() 工作不正常,给了我错误的宽度:

[------------------------------------------------- -------------------------------------------------- -------------------]

我有一些像 $txt = "hallo" 这样的文本。

我试图通过内置函数 GetStringWidth() 获取字符串宽度,然后创建一个具有字符串宽度的单元格。

// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

// set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

// set margins
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

// set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

$pdf->setFontSubsetting(true);

$pdf->AddPage();

$pdf->SetFont('times', '', 20);
$pdf->SetCellPadding(0);

$txt = "hey i'm santa clause";
$width = $pdf->GetStringWidth($txt);

$pdf->Cell($width, $h=0, $txt, $border=1, $ln=0, $align='', $fill=false, $link='', $stretch=0, $ignore_min_height=false, $calign='T', $valign='M');

$pdf->Output('example_001.pdf', 'I');
?>

然而,创建的单元格是其内容的缩写。如果我尝试与 courier 相同,则效果很好。

我认为这是衡量 GetStringWidth 没有正确处理字体宽度的一种方法,因为 Courier 对每个字符都有相同的宽度,这是可行的。

如何让 GetStringWidth() 工作

[------------------------------------------------- -------------------------------------------------- -------------------]

今天我尝试用 Firefox/Evince 而不是 chrome 打开它

结果如下:在此处输入图像描述 Firefox 在左边,chrome 在右边。

生成的 PDF 文件是 v. 1.7

使用的chrome版本:

谷歌浏览器测试版 (41.0.2272.53-1)

这里可能出了什么问题?真的是铬的错吗?或者我在这里错过了什么?

谢谢

4

1 回答 1

0

您必须尝试替换:

$pdf->Output("{$filename}.pdf", 'I');

$pdf->Output("{$filename}.pdf", 'D');
于 2016-05-10T07:53:51.213 回答