web-dev-qa-db-ja.com

TCPDF、OpenTypeフォントの「フォント定義ファイルを含めることができませんでした」

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

このエラーメッセージに関する多くの質問は、同じアドバイスを受け取ることになります。 TCPDF(755)が使用するフォルダーに適切なファイルアクセス許可を設定しました。addTTFfont()を使用して、.ttf TrueTypeフォントを次のように含めることに問題はありません。

$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()関数 (ドキュメントはこちら) もあることに気づきました。これには、フォントタイプへの参照が含まれていないため、使用する方がわかりやすいようです。しかし、私はこの関数を、それが持っている小さなドキュメントで機能させることができませんでした。

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

10
Seroczynski

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

これらの2つの方法は少しわかりにくいかもしれませんが、数か月前にいくつかメモを書きましたが、それが何らかの形で役立つことを期待して、以下に部分的に再現します。

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

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

  • SetFont()-書き込むテキストの次のチャンクのフォントを設定します。

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

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

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

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

13
JamesG

TCPDFの新しいフォントの追加とトルコ文字の問題を解決した方法。

Converter Linkを使用します。

  1. http://fonts.snm-portal.com
  2. 3つのファイルをダウンロードし、
  3. TCPDF-master/fontsをコピーする
  4. 使用法:$ pdf-> SetFont( 'roboto'、 ''、14);

enter image description here

4
Limitless isa

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

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

これを使用 リンク

_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ファイルは必要ありません。

それが役に立てば幸い

2
Tom Sawin