PHPを使用してその場でPDFファイルを生成しています。私の問題は、PDFファイルに挿入されるテキストの一部に改行を挿入する必要があることです。何かのようなもの:
$pdf->InsertText('Line one\n\nLine two');
したがって、次のように出力されます。
1行目
2行目
PDFでは機能しないことは知っ\n
ていますが、これらのファイルの改行を表す文字や何かを知っていますか?
PHPを使用してその場でPDFファイルを生成しています。私の問題は、PDFファイルに挿入されるテキストの一部に改行を挿入する必要があることです。何かのようなもの:
$pdf->InsertText('Line one\n\nLine two');
したがって、次のように出力されます。
1行目
2行目
PDFでは機能しないことは知っ\n
ていますが、これらのファイルの改行を表す文字や何かを知っていますか?
fpdfを使用している場合、改行を使用できるようにするには、ここで説明するように複数行のテキストセルを使用する必要があります。
これを使用する場合、テキストの改行は正しく解釈および変換される必要があります。
簡単な例:
$pdf->Multicell(0,2,"This is a multi-line text string\nNew line\nNew line");
ここで、2は複数行のテキストボックスの高さです。どの単位で測定されているのか、または0に設定して無視できるのかどうかはわかりません。最初はうまくいかない場合は、おそらく多数で試してみてください。
あなたのコードは
$pdf->InsertText('Line one\n\nLine two');
使用しているPDFライブラリについてはわかりませんが、通常、\ nを改行として解釈する場合は、PHPで二重引用符を使用する必要があります。
$pdf->InsertText("Line one\n\nLine two");
chr(10)に変更'\n'
したところ、うまくいきました:
$pdf->MultiCell(0,5,utf8_decode($variable1 . chr(10) . $variable2),1);
あなたはそれを述べます
2 は、複数行のテキスト ボックスの高さです。
いいえ、ちがいます。2 は、テキストの行間の距離です。
最初にマルチセルを配置するためにステートメントでGetY()
使用された元の Y 値を使用して減算しない限り、実際の結果のテキスト ボックスの高さを計算する実際の方法はないと思います。SetXY()
MultiCell($w, $h, 'text<br />', $border=0, $align='L', $fill=1, $ln=0,
$x='', $y='', $reseth=true, $reseth=0, $ishtml=true, $autopadding=true,
$maxh=0);
MultiCell
基本レベルで html を読み取るように を設定できます。
私が見つけた解決策は次のとおりです。
$text = 'Line one\n\nLine two');
$text = explode('\n', $text);
foreach ($text as $txt){
$pdf->Write($txt);
$pdf->Ln();
}
したがって、この方法では、任意の数の \n を任意の位置に配置できます。このテキストをデータベースから動的に取得している場合、行が正しく改行されます。
手遅れかもしれませんが、この問題を非常に簡単な方法で解決しました。マルチセルオプションを使用しており、テキストはフォームから取得されます。入力フィールドを使用してテキストを取得すると、改行を挿入できません方法ですが、テキストエリアフィールドを使用する場合、テキストエリアの改行はマルチセルの改行です...それだけです。utf8_encode($text)
アクセントを保持するオプションを使用しても機能します
別の解決策 (TCPDF で動作)
長い文字列には HEREDOC を使用します。たとえば、CONSTにHERDOCを配置します(さまざまな言語を定義します)
$_prepare_const_EN = <<<EOT
this is a long string
and new line as well ...
EOT;
$define('STR_EN', $_prepare_const_EN);
$pdf->InsertText(STR_EN);
私にとってはうまく機能します....