【FuelPHP】dompdfで作成するPDFのサイズを小さくしてみる


【FuelPHP】dompdfで作成するPDFのサイズを小さくしてみる | Bamboo lath 日々の記録dompdfで作成するPDFのサイズを小さくしてみる

前回dompdfを使ってHTMLからPDFを生成できるようになったのですが、
どうもPDFにフォントが全て含まれているようでファイルサイズがでかかった。
そこで設定を変更して利用しているフォントだけを含むようにしてみる。

■dompdf_config.custom.inc.php

//define("DOMPDF_ENABLE_FONTSUBSETTING", true);
// ↓
define("DOMPDF_ENABLE_FONTSUBSETTING", true);

上記の設定変更で問題無いはずだけど以下のエラーが発生。

Fatal Error - Class 'Font' not found in /****/fuel/packages/pdf/lib/dompdf/lib/class.pdf.php on line 2352
// Load font
$font_obj = Font::load($fbfile);

上記のFontクラスが読めていない模様。
そもそも前回パスを勝手に変更して設置しているのでその影響かもしれない。
とりあえず該当クラスでFontが読めるように数行追記

■packages/pdf/lib/dompdf/lib/class.pdf.php

require_once "php-font-lib/classes/Autoloader.php";
use FontLib\Font;

実行するとさらに以下のエラーが発生。

Fatal Error - Class 'Font_Binary_Stream' not found in /****/fuel/packages/pdf/lib/dompdf/lib/class.pdf.php on line 2367

php-font-lib/classesの下を見ても「Font_Binary_Stream」は無いので、
名前が似ている「Binary_Stream」を利用するように変更してみる。

■packages/pdf/lib/dompdf/lib/class.pdf.php

require_once "php-font-lib/classes/Autoloader.php";
use FontLib\Font;
use FontLib\Binary_Stream;

■packages/pdf/lib/dompdf/lib/class.pdf.php @2367くらい

//$font_obj->open($tmp_name, Font_Binary_Stream::modeWrite);
//↓
$font_obj->open($tmp_name, Binary_Stream::modeWrite);

実行すると動いた。
元々4.3MBあったPDFが39KBに激減した。

これでいいのかな・・・・?

■参考サイト
DOMPDFでPDFファイルサイズを小さくする
http://madroom-project.blogspot.jp/2012/12/dompdfpdf.html

コメントを残す

メールアドレスが公開されることはありません。