18

HTMLからPDFを生成するためにtcpdfを使用しています。すべて正常に動作しており、コンピューターで PDF を表示すると正常に表示されますが、何らかの理由で iPhone で PDF を表示すると空白で表示されます。私が見ることができるのは、作成した境界線に値が含まれているだけですが、値が表示されていません。

これが私のコードです

require_once('/tcpdf/tcpdf/config/lang/eng.php');
require_once('/tcpdf/tcpdf/tcpdf.php');
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$pdf->setLanguageArray($l);
$pdf->SetFont('dejavusans', '', 10);
$pdf->AddPage();
$html = file_get_contents('http://www.website.com/invoice.php?invoice_id='.$invoice_id);
$pdf->writeHTML($html, true, false, true, false, '');
$pdf->lastPage();
$pdf->Output('/html/admin/emailattachements/invoice.pdf', 'F');

その最後の行で。後で電子メール スクリプトを使用して PDF を取得し、顧客に送信するときに、そのディレクトリに PDF をコピーします。

空白の PDF

編集:解決済み

PDFを作成するために使用していたフォントであることがわかりました。iPhoneはdejavusansを読むことができません:)「times」に変更しましたが、正常に動作します

編集:更新

この記事以来、私は tcpdf でさらに多くの PDF を作成しなければなりませんでしたが、最近http://www.tcpdf.org/fonts. .phpと適用

$fontname = $pdf->addTTFfont('/path-to-font/DejaVuSans.ttf', 'TrueTypeUnicode', '', 32);

手動でフォントを追加し、フォント ファイル パスを設定して手動でファイルをアップロードすることで、動作しない既存のフォントを取得し、実際に動作させることができました。

4

4 に答える 4

1

AddFont メソッドなしでどのように機能するかはわかりませんが、同じ問題があり、4 番目のパラメーター $subset = false を追加すると修正されます。

$subset (mixed) true の場合、フォントのサブセットのみを埋め込みます (使用される文字に関連する情報のみを保存します)。false の場合はフル フォントが埋め込まれます。'default' が setFontSubsetting() を使用して設定されたデフォルト値を使用する場合。このオプションは、TrueTypeUnicode フォントに対してのみ有効です。ユーザーがドキュメントを変更できるようにする場合は、このパラメーターを false に設定します。フォントをサブセット化した場合、PDF を受け取る人は、PDF に変更を加えるために同じフォントを使用する必要があります。フォントの一部のみを埋め込むため、PDF のファイル サイズも小さくなります。

$pdf->AddFont('dejavusans', '', 'dejavusans', false);
$pdf->AddFont('dejavusans', 'B', 'dejavusans', false);

$pdf->SetFont('dejavusans', '', 10);

dejavusans はマルチバイト文字に関する多くの問題を修正しているため、簡単に helvetica に変更することはできません。この変更により、PDF のサイズが 2 倍以上になることがわかりました。

これは @ user3548394 と同じ考え方ですが、この変更は一度だけ行う必要があります。

于 2014-06-06T13:12:20.847 に答える
0

静的テキストを含む PDF を作成して確認します。

于 2014-03-11T07:32:40.587 に答える