13

私はフォントに関する深い知識のない Web プログラマーであり、TCPDF にカスタム OpenType フォントを含めるのに苦労しています。DRM で保護されていない OpenType フォント ファイル (.oft) を購入しました。

このエラー メッセージに関する多くの質問に対して、同じアドバイスが返ってきます。私は、TCPDF (755) で使用されるフォルダーに正しいファイル許可を設定しましたaddTTFfont()

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

そこで、OpenFont タイプを含めるために次のコードを作成しました。addTTFfont()ドキュメントは、OpenTypeUnicode および OpenType パラメータのサポートを示しているようです。

$pdf->addTTFfont('/path-to-font/customfont.otf', 'OpenTypeUnicode', '', 96);

結果は次のとおりです。

TCPDF ERROR: Could not include font definition file:

私たちは TCPDF v6.0.020 を使用しており、TCPDF フォントの情報ページを読んでいますが、これまでうまくいきませんでした。私は、TCPDF にもaddFont()関数(ドキュメンテーションはこちら)があることに気付きました。これは、どのフォント タイプへの参照も含まれていないため、より明白に使用できるように思われます。しかし、私はこの関数が持っている小さなドキュメントで動作するようにすることができませんでした.

どんな助けでも大歓迎です。

4

7 に答える 7

16

を呼び出すときにそのエラーが発生していますaddTTFfont()か? 私が尋ねる理由は、TCPDFコードをチェックしたためです(「フォント定義ファイルを含めることができませんでした」でグローバル検索を行っただけです)、そのメッセージはaddFont()メソッドにのみ表示されます。

これらの 2 つの方法は少し混乱する可能性がありますが、私は数か月前にいくつかのメモを書きました。

  • addTTFfont()- このメソッドの主な機能は、フォントを TTF (または OTF) から、TCPDF が必要とする「生の」バージョンに変換することです。この関数の実装方法は、理論的には、ドキュメントにフォントを追加する主要な方法として使用できます。最初に tcpdf フォント フォルダーをチェックし、変換されたファイルがそこにない場合は、先に進んで変換を行います。オーバーヘッドが少し増えるだけですが、プロセスが正常に機能するためには、変換しているフォントのスタイルを知る必要があるため、ファイルにフォントを追加する私の好みの方法ではありません. addFont()IMO、この方法を使用して、使用する予定のフォントを事前に変換し、単に「生の」バージョンをドキュメントに追加するために使用することをお勧めします。

  • AddFont()- これにより、ドキュメントに「生の」(つまり、変換済みの) フォントが追加されます。つまり、テキストの書き込みに使用できるようになります。

  • SetFont()- これにより、次に書くテキストのチャンクのフォントが設定されます。

したがってaddTTFfont()、フォントを「未加工」バージョンに事前に変換してから、実際に PDF を作成するコードでaddFont()andを使用します。setFont()

が上記のエラー メッセージで失敗する場合addFont()は、フォント定義ファイルが見つからないことを意味します。スタイル セット ('i'、'b'、'bi' など) を指定して呼び出す場合はaddFont()、これをファイル名 (拡張子の前) に追加するだけであることに注意してください。

addTTFFont()最も重要なことは、への呼び出しが「生の」フォント ファイルを生成し、それらをフォント フォルダーに保存していることを確認する必要があることです。スタイルごとに 3 つのファイルがあり、拡張子は.php.zです.ctg.z。したがって、 というフォントを変換するblah.ttfblah.php、 、blah.zおよびになりblah.ctg.zます。を変換するblah bold.ttfと、TCPDF はそれがボールド フォントであると判断し、ファイル名の末尾に 'b' を追加します: blahb.phpblahb.zおよびblahb.ctg.z.

うまくいけば、ここに役立つナゲットがあるでしょう!幸運を!

于 2013-10-16T03:04:32.983 に答える
2

この問題を解決するには、フォントを生成します。

すべてのパスが正しいことを確認してください。

このリンクを使用

make_fontのフォルダー内にフォルダーを配置することを忘れないでくださいhtml2pdf

正しいパスについて覚えておいてください: index.php のフォルダー make_font 内の html2pdf.class.php

また

他の問題がある場合 - フォント: フォント定義ファイルを含めることができませんでした:

新しいフォントの正しい名前の問題です。

たとえば、pdf を生成するときに使用します。

正しい:$html2pdf->addFont('lato i', '', 'latoi.php');

正しくない:$html2pdf->addFont('lato', '', 'latoi.php');

生成されるファイルは 2 つだけです。

latoi.php

latoi.z

ctg ファイルは必要ありません。

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

于 2017-02-16T11:25:54.477 に答える
0

私の場合、それは単に (もう見つからない).ttfフォント ファイルへの間違ったパスでした。テストでは、ドライブを正常に使用しましたが、コマンドを使用するコード行で、php ファイルD:/の prod ドライブに戻すのを忘れていました。C:/addTTFfont('C:/...')

残念ながら、TCPDF エラー メッセージには、問題を引き起こしているソース ファイルとコード行に関する情報は何も出力されません。

于 2020-07-03T09:39:44.853 に答える