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');
?>

ただし、作成されたセルは、その内容を省略します。宅配便で同じことを試してみると、うまくいきます。

これは、フォントの幅を正しく処理していない GetStringWidth の測定値だと思います。これは、Courier が各文字に対して同じ幅を持っているためです。

GetStringWidth() を機能させるにはどうすればよいですか

【-------------------------------------------------】 -------------------------------------------------- -------------------]

今日はchromeではなくFirefox/Evinceで開いてみました

結果は次のとおりここに画像の説明を入力 です。左側が Firefox、右側が chrome です。

生成された PDF ファイルは v. 1.7 です。

クロムの使用バージョン:

google-chrome-ベータ (41.0.2272.53-1)

ここで何がうまくいかなかったのでしょうか?それは本当にクロムのせいですか?それとも、ここで何かが欠けていますか?

ありがとう

4

1 に答える 1