PDF_begin_page()
(PHP 4, PECL pdflib >= 1.0.0)
Start new page[deprecated]
说明
PDF_begin_page(resource $pdfdoc,float $width,float $height): bool
Adds a new page to the document.成功时返回TRUE
,或者在失败时返回FALSE
。
This function is deprecated since PDFlib version 6, use PDF_begin_page_ext() instead.
I spent a lot of hours tweaking numbers in my PDF source, trying to nudge things the right way, and, invariably, really messing up big-time... Then one day I realized that all these numbers were supposed to be (INCHES * 72). Now my PDF code looks more like: <?php . . . pdf_begin_page($pdf, 8.5 * 72, 11 * 72); . . /* set up $helvetica as font */ . pdf_set_font($pdf, $helvetica, 9); $leading = pdf_get_value($pdf, 'leading'); pdf_show_boxed($pdf, 0.5 * 72, 0.5 * 72, 4.0 * 72, $leading, 'left', ''); ?> 0.0, 0.0 is at the bottom left. 8.5 * 72, 11 * 72 is at the top right. Everything in between is in x.xx * 72 where x.xx is INCHES. Suddenly, I can visualize the PDF while I'm typing. Might work for you too. Sample linked from: http://l-i-e.com/resume.htm
Try this... <? function mm2pt($val){ return floatval($val * 2.835016835017); } $xpdf = pdf_new(); pdf_open_file($xpdf); pdf_begin_page($xpdf, mm2pt(210), mm2pt(297)); // ... ?>
The DIN paper sizes below are rounded. Theese functions returns exact paper sizes: <?php function paperheight($papername) { $name=strtolower($papername); switch($name) { case "dl": return 11/2.54*72; case "m65": return paperheight("c6"); case "ledger": case "tabloid": return 17*72; case "legal": return paperwidth("ledger"); case "letter": return 11*72; default: return paperwidth($name)*sqrt(2); } } function paperwidth($papername) { $name=strtolower($papername); switch($name) { case "dl": return 22/2.54*72; case "m65": return paperwidth("c5"); case "ledger": case "tabloid": return 14*72; case "legal": case "letter": return paperheight("ledger")>>1; default: $i=strpos("ebca",$name{0}); $j=substr($name,1); if($i!=false && ($j>0 || $j==="0")) return 100/(pow(2,($i+$j*4-1)/8))/2.54*72; else die("Unkown paper format: $papername"); } } $paper = "A4"; $w = paperwidth($paper); $h = paperheight($paper); echo "$paper: $w ppt * $h ppt"; ?>
The problem is that A4 is *NOT* exactly 210mm*297mm. (Further more, the 2.835016835017 is incorrect. You convert from mm to pps by dividing by 25.4 and multiplying by 72. Hence the ratio is 2.83464566929133858267). The code that I posted in may produces correct sizes. (Except for the "m65" format, sorry. "m65" is the same as "dl", and should return the same values).