set_option("errorpolicy=return"); $p->set_option("searchpath={" . $searchpath . "}"); if ($p->begin_document($outfile, "") == 0) throw new Exception("Error: " . $p->get_errmsg()); $p->set_info("Creator", "PDFlib Cookbook"); $p->set_info("Title", $title); /* Start page */ $p->begin_page_ext(0, 0, "width=a4.width height=a4.height"); /* Load a font */ $font = $p->load_font("NotoSerif-Regular", "unicode", ""); if ($font == 0) throw new Exception("Error: " . $p->get_errmsg()); $p->setfont($font, 12); /* Get the font name: use "api" to get the font name used by PDFlib. * (use "acrobat" for the Acrobat font name or use "full" for * retrieving the full font name) */ $p->fit_textline("fontname (api):", $x, $y-=$yoffset, ""); $info = $p->info_font($font, "fontname", "api"); if ($info > -1) { $fontname = $p->get_string($info, ""); $p->fit_textline($fontname, $xindent, $y, ""); } /* Get the file name for the font outline file. This will be successful * since in our case the font file name is identical to the font name. * In other cases the font file name can only be * retrieved if it has been configured using set_option() and the * "FontOutline" resource category. */ $p->fit_textline("fontfile:", $x, $y-=$yoffset, ""); $info = $p->info_font($font, "fontfile", ""); if ($info > -1) { $tmpname = explode("/", $p->get_string($info, "")); $fontname = $tmpname[count($tmpname)-1]; $p->fit_textline($fontname, $xindent, $y, ""); } /* Get the encoding of the font: use "api" to get the encoding name * as specified in PDFlib (use "actual" for the name of the encoding * actually used for the font) */ $p->fit_textline("encoding (api):", $x, $y-=$yoffset, ""); $info = $p->info_font($font, "encoding", "api"); if ($info > -1) { $fontname = $p->get_string($info, ""); $p->fit_textline($fontname, $xindent, $y, ""); } /* Is the font a host font? */ $p->fit_textline("hostfont:", $x, $y-=$yoffset, ""); $info = $p->info_font($font, "hostfont", ""); $p->fit_textline($info, $xindent, $y, ""); /* Is the font a symbol font? */ $p->fit_textline("symbolfont:", $x, $y-=$yoffset, ""); $info = $p->info_font($font, "symbolfont", ""); $p->fit_textline($info, $xindent, $y, ""); /* will the font be embedded? */ $p->fit_textline("willsubset:", $x, $y-=$yoffset, ""); $info = $p->info_font($font, "willsubset", ""); $p->fit_textline($info, $xindent, $y, ""); /* Get information about if the font will be embedded */ $p->fit_textline("willembed:", $x, $y-=$yoffset, ""); $info = $p->info_font($font, "willembed", ""); $p->fit_textline($info, $xindent, $y, ""); /* Italic angle of the font */ $p->fit_textline("italicangle:", $x, $y-=$yoffset, ""); $info = $p->info_font($font, "italicangle", ""); $p->fit_textline(sprintf("%.1f",$info), $xindent, $y, ""); /* Weight of the font (between 100 and 900); 400=normal, 700=bold */ $p->fit_textline("weight:", $x, $y-=$yoffset, ""); $info = $p->info_font($font, "weight", ""); $p->fit_textline($info, $xindent, $y, ""); /* Number of glyphs in the font */ $p->fit_textline("numglyphs:", $x, $y-=$yoffset, ""); $info = $p->info_font($font, "numglyphs", ""); $p->fit_textline($info, $xindent, $y, ""); /* Number of kerning pairs in the font */ $p->fit_textline("kerningpairs:", $x, $y-=$yoffset, ""); $info = $p->info_font($font, "kerningpairs", ""); $p->fit_textline($info, $xindent, $y, ""); /* Asender for the font (at size 1000) */ $p->fit_textline("ascender:", $x, $y-=$yoffset, ""); $info = $p->info_font($font, "ascender", "fontsize=1000"); $p->fit_textline(sprintf("%.1f", $info), $xindent, $y, ""); /* Descender for the font (at size 1000) */ $p->fit_textline("descender:", $x, $y-=$yoffset, ""); $info = $p->info_font($font, "descender", "fontsize=1000"); $p->fit_textline(sprintf("%.1f", $info), $xindent, $y, ""); /* Recommended additional line spacing for the font (at font size 1000) */ $p->fit_textline("linegap:", $x, $y-=$yoffset, ""); $info = $p->info_font($font, "linegap", "fontsize=1000"); $p->fit_textline(sprintf("%.1f", $info), $xindent, $y, ""); /* Finish page */ $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_info.pdf"); print $buf; } catch (PDFlibException $e) { echo("PDFlib exception occurred:\n". "[" . $e->get_errnum() . "] " . $e->get_apiname() . ": " . $e->get_errmsg() . "\n"); exit(1); } catch (Throwable $e) { echo("PHP exception occurred: " . $e->getMessage() . "\n"); exit(1); } $p = 0; ?>