web-dev-qa-db-ja.com

特殊文字を含むTCPDFHTMLは、空のPDFファイルを表示します

TCPDFライブラリバージョン:5.9.011を使用しています。 HTMLレイアウトをPDFとして実行しようとしています。私が例で試したものについては、 site を提供します

$html = '<h1>HTML Example</h1>
<h2>List</h2>
Some special characters: &lt; € &euro; &#8364; &amp; è &egrave; &copy; &gt; \\slash \\\\double-slash \\\\\\triple-slash
';
// output the HTML content
$pdf->writeHTML($html, true, false, true, false, '');

//Close and output PDF document
$pdf->Output('example_006.pdf', 'I');

どうやら、生成されたPDFデフォルトのヘッダーとフッターのみで、中央のコンテンツは空白であることがわかりました。

ただし、次のような特殊文字を削除すると、次のようになります。

$html = '<h1>HTML Example</h1>
<h2>List</h2>
Some special characters:
';

PDFは、$htmlで指定された中間コンテンツを取得します

13
Asif Mulla

行の前$ pdf-> writeHTML

$html = utf8_decode($html);

多分

$html = utf8_encode($html);
13
anonimus

他の人がすでに述べたように、コンストラクターを変更する必要があります。UTF-8フレームを設定し、以下のように新しい文字シェットを変更します。

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, false, 'ISO-8859-1', false);

これを変更するだけでは、空白のページが表示されるのを常に防ぐことはできません。空白のページが表示されないようにするには、フォントの種類を「helvetica」などに変更します。

$pdf->SetFont('helvetica', '', 11, '', true);

できます!

9
Fré

コンストラクターを変更し、UTF-8 flaseを設定し、以下のように新しいcharshetを変更する必要があります。

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, false, 'ISO-8859-1', false);

上記の例では、UTF-8の代わりにエンコードISO-8859-1を設定し、trueをfalseに変更しています。

クリシュ

5
Elisa

私も同様の問題を抱えていました。複数のリストと箇条書きの目盛り記号を含むHTMLファイルからPDFを生成する必要がありました。

私はこれらすべての解決策を試しましたが、どれもうまくいきませんでした。写真を使用する必要がありましたが、プロセスが遅くなりました。ついに私はこれに出くわしました: http://www.tcpdf.org/examples/example_055.pdf 、最後にたくさんの記号が付いた「zapfdingbats」フォントがあります。

そこで、すべてのティック画像を<span>3<span>に置き換え、この要素のフォントをfont-family="zapfdingbats"に設定すると、機能しました。少しハックですが、うまく機能します。

3
floflo88

HTMLコンテンツをPDFに書き込んでおり、チェックマーク記号を印刷する必要があります。これが私がしたことであり、それはうまくいきました。

$pdf->SetFont('zapfdingbats');
$pdf->SetFont('helvetica'); // for regular content

次に、HTMLに以下のコードでチェックマークを追加しました

<span style="font-family: zapfdingbats;">4</span>

これを願っています

2
Nagarjun

テキストを変数に入れ、php関数を使用して変換できます

uTF-8文字の例

    $html = '<h1>HTML Example</h1>
<h2>List</h2>

Some special characters: € è ù à \\ \\\
';
// output the HTML content
$pdf->writeHTML(utf8_encode($html), true, false, true, false, '');

//Close and output PDF document
$pdf->Output('example_006.pdf', 'I');

他の関数の使用について phpリファレンスガイド

0
Ossarotte

UTF8文字で終わる文字列の後に単一のスペースを追加する必要がありました(_<p>_タグ全体の後ではありません):

_$name = '<p style="color:red;font-weight:bold;font-size:34pt;text-align:center;">Jaźń Jeżę </p>';
_

utf_decode()およびutf_encode()は機能しませんでした。

0
long

最新バージョンのTCPDFを使用しています。記載されている手順に従ってください ここ 。動作するはずです

0
Ankit Shah

特殊文字を使用して、őŐűŰのようなhtmlでPDFに印刷するには、dejavusansでSetFontを使用します

また、htmlでfont-familyを使用する必要がないことを確認してください。フォントファミリーがdejavusansを上書きし、探しているものが得られないことを願っています。

$html = '<h1>HTML Example</h1>
<h2>List</h2>
Some special characters: &lt; € &euro; &#8364; &amp; è &egrave; &copy; &gt; \\slash 
\\\\double-slash \\\\\\triple-slash
more char ő Ő ű Ű
';
$pdf->SetFont('dejavusans');
$pdf->writeHTML($html, true, false, true, false, '');
$pdf->Output('output.pdf', 'D');

これが役立つことを願っています

0
vishu

同様の問題が発生し、次のようにすべて修正しました。

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

そして最後に:

$pdf->writeHTMLCell(0, 0, '', '', utf8_decode($html), 0, 1, 0, true, '', true);
0
John

私にとって、これは問題を修正しました:

$this->pdf->AddPage('P', 'A4');
$this->pdf->deletePage($this->pdf->getNumPages());

私はそれが誰かを助けることを願っています

0
Julien Gustin