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).
PDF_begin_page
(PHP 4, PECL pdflib >= 1.0.0)
PDF_begin_page — Start new page [deprecated]
Description
bool PDF_begin_page
( resource
$pdfdoc
, float $width
, float $height
)
Adds a new page to the document. Returns TRUE on success or FALSE on failure.
This function is deprecated since PDFlib version 6, use PDF_begin_page_ext() instead.
rz at daimi dot au dot dk ¶
7 years ago
d dot schneider at 24you dot de ¶
7 years ago
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));
// ...
?>
rz at daimi dot au dot dk ¶
8 years ago
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";
?>
ceo at l-i-e dot com ¶
8 years ago
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
psychosos at gmx dot at ¶
10 years ago
Points for CD covers (approximate values)
Front cover (119x119mm) => 337.33x337.33 points
Inlay including sides (150x117mm) => 425.21x331.66 points
Inlay excluding sides (137.4x117mm) => 389.49x331.66 points
ronald at upperground dot nl ¶
10 years ago
When you use the mentioned size of an a4 pdf file it will make a pdf file in the this size: 209.9 x 297 mm. If you want to create a real a4 sized pdf you can use the following:
PDF_begin_page($pdf, 595.3, 842);
Itīs a small step i know... but itīs just the last mm.
f dot enzenhofer at apa dot at ¶
10 years ago
format width height
A0 2380 3368
A1 1684 2380
A2 1190 1684
A3 842 1190
A4 595 842
A5 421 595
A6 297 421
B5 501 709
letter 612 792
legal 612 1008
ledger 1224 792
11x17 792 1224
