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));
// ...
?>
(PHP 4, PECL pdflib >= 1.0.0)
PDF_begin_page — Iniciar una nueva página [obsoleta]
$pdfdoc
, float $width
, float $height
)
Añade una nueva página al documento. Devuelve TRUE
en caso de éxito o FALSE
en caso de error.
Esta función está obsoleta desde la versión 6 de PDFlib, use PDF_begin_page_ext() en su lugar.
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));
// ...
?>
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
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).
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";
?>