set_option("errorpolicy=return"); $p->set_option("stringformat=utf8"); if ($p->begin_document($outfile, "") == 0) throw new Exception("Error: " . $p->get_errmsg()); $p->set_info("Creator", "PDFlib Cookbook"); $p->set_info("Title", $title); /* ページを始める */ $p->begin_page_ext(0, 0, "width=300 height=300"); /* 便利な方法:OS上にすでにフォントがインストールされていて、正確なフォ * ント名が分かっている場合は、フォント名でロードすることができる。 * (ホストフォントの正確な名前を調べる方法についてはチュートリアル参照) * 例えば"Verdana"フォントがOS上(MacまたはWindows)にインストールされて * いる場合、以下のようにロードすることができる。 */ /* The following will only work on Mac or Windows, provided the * font Verdana is installed in the system. $font = $p->load_font("Verdana", "unicode", ""); if ($font == 0) throw new Exception("Error: " . $p->get_errmsg()); $p->setfont($font, 10); $p->fit_textline("Font file is installed in the system", $x, $y, ""); $fontname = $p->get_string($p->info_font(font, "fontname", "api"), ""); $p->fit_textline("Font name used in PDFlib: " . $fontname, $x, $y-=20, ""); */ /* ホストフォント(OS上にインストールされているフォント)を使わない場合は、 * 「Searchpath」 でフォントのあるフォルダを指定する。 * 必要があれば、さらに「SearchPath」に、フォントのあるフォルダを追加する。 * PDFlibは「SearchPath」で指定された全てのフォルダからフォントを検索する。 */ $p->set_option("searchpath={" . $searchpath . "}"); /* フォント名とフォントファイル名(".ttf", ".otf", ".pfb"などの拡張子は除外) * が同じ場合は、単純にフォントをロードすることができる。 */ /* または、下記のように絶対パスを指定することもできる。 * * $p->set_option(FontOutline=NotoSerif-Regular=/usr/fonts/NotoS-R.ttf"); * * この場合、検索パスは適用されず、フォントは上記で定義された場所から * ロードされる。 */ /* フォント名 "NotoSerif-Regular" を使用してロードできる。 */ $font = $p->load_font("NotoSerif-Regular", "unicode", ""); if ($font == 0) throw new Exception("Error: " . $p->get_errmsg()); $p->setfont($font, 10); $p->fit_textline("Font file name: NotoSerif-Regular.ttf", $x, $y-=40, ""); $fontname = $p->get_string($p->info_font($font, "fontname", "api"), ""); $p->fit_textline("Font name used in PDFlib: " . $fontname, $x, $y-=20, ""); /* PostScript Type1 フォントの場合 、フォントのアウトラインファイル、メトリッ * クファイルの両方が必要となる。「FontOutline」で、フォントのアウトラインフ * ァイル(lcdxsr.pfa)とフォント名を紐付ける。さらに「FontAFM」(または「Font * PFM」)で、フォントのメトリックファイル(lcdxsr.afm)とフォント名を紐付ける。 */ $p->set_option("FontOutline={LuciduxSans=lcdxsr.pfa}"); $p->set_option("FontAFM={LuciduxSans=lcdxsr.afm}"); /* "LuciduxSans" フォントをロードし、埋め込む */ $font = $p->load_font("LuciduxSans", "unicode", "embedding"); if ($font == 0) throw new Exception("Error: " . $p->get_errmsg()); $p->setfont($font, 10); $p->fit_textline("Font file names: lcdxsr.pfa and lcdxsr.afm", $x, $y-=40, ""); $fontname = $p->get_string($p->info_font($font, "fontname", "api"), ""); $p->fit_textline("Font name used in PDFlib: " . $fontname, $x, $y-=20, ""); /* ページを終了する */ $p->end_page_ext(""); $p->end_document(""); $buf = $p->get_buffer(); $len = strlen($buf); header("Content-type: application/pdf"); header("Content-Length: $len"); header("Content-Disposition: inline; filename=font_resource.pdf"); print $buf; } catch (PDFlibException $e) { echo("PDFlib exception occurred:\n". "[" . $e->get_errnum() . "] " . $e->get_apiname() . ": " . $e->get_errmsg() . "\n"); exit(1); } catch (Exception $e) { echo($e->getMessage()); exit(1); } $p = 0; ?>