4

我正在使用 PHP 扩展 FPDF 来创建 PDF 文档。我相信我的边距一直设置为 1",并带有对齐的文本,但是当我创建 PDF 文档,下载并在 Acrobat 中打开它时,我看到左边距为 1",但右边距约为 1.2" . 我已经通过 fpdf.php 寻找问题并找不到它。

$oPdf = new myPDF('P', 'mm', 'letter');

$oPdf->Open();
$oPdf->SetMargins(25.4,25.4,25.4,25.4);

//set default font/colors
$oPdf->SetFont('Times', '', 12);
$oPdf->SetTextColor(0,0,0);
$oPdf->SetFillColor(255, 255, 255);

//add the page
$oPdf->AddPage();
$oPdf->AliasNbPages();

如果我更改顶部和左侧边距值,文档会反映更改。如果我更改底部或右侧,则没有更改。我已经看到如何通过设置自动默认分页符来更改底部,并在其他地方回答。我的问题是如何更改右边距并在我的文档中实际生效?我有一种感觉,这与 FPDF 计算对齐的文本是否适合行时的文本测量有关。我检查了线的宽度,它输出 165.1(即 6.5 英寸 x 25.4 毫米)完全难倒。

4

1 回答 1

4

好的,我觉得有点愚蠢,但希望这对其他人有帮助。我使用 FpdfMulticell(参见http://www.interpid.eu/fpdf-multicell)来更好地控制单元格和在 PDF 文档上显示内容的其他部分。除了创建的冗余之外,这很好。此函数的组件需要宽度和高度才能创建单元格。这就是问题所在。出于某种原因,我将 160 传递给它而不是 165.1。6.5" x 25.4 = 165.1。当我通过引用在类中创建 multiCell 函数时,它解决了我的问题。

如果您要使用多单元格,我建议您在页面的开头声明一个变量,例如 $pw(即页面宽度),然后传递变量而不是传递常量值。这样你的值是统一的,如果你想改变它,那么你只有 1 个值可以改变。确保您发表评论,以便您知道该变量的用途是什么。

$oMulticell = new FpdfMulticell($oPdf);
$pw = 165.1
//Make sure that the content is long enough to go to another line or you won't
//notice the difference with the justified text
$content = "Write some text here Write some text here Write some text here Write some text here Write some text here Write some text here Write some text here Write some text here ";
$oMulticell->multiCell($pw,10,$content,0,"J",1,0,0,0,0);

这行得通!

于 2013-09-12T04:53:21.747 回答