使用FPDF / FPDI / TCPDF生成PDF时文本被剪裁

时间:2011-11-08 14:54:21

标签: php pdf fpdf tcpdf fpdi

我有一个PHP项目,我正在打开预制PDF,并通过PHP填充数据。我遇到的问题是其中一个文本元素没有显示出来。我将它定位在PDF页面的右下角。如果我向左移动一点,就会显示出来。就好像有一些剪辑或其他东西。

我正在使用TCPDF,因为我需要修改现有的PDF,所以我也必须使用FPDI类。在我看来FPDI通常与FPDF集成,所以我一直在使用FPDF方法来构建我的PDF。好的,所以这里是我的一些代码(或相关部分)......

$pdf = new PDF();
$pdf->AddPage( 'L', 'Letter' );
$pdf->SetAutoPageBreak(false);
$pdf->SetXY(261,200);
$pdf->Write(5, 'test');

当我使用值260定位文本时,文本右侧至少有一厘米的空格。如果我将它再移动一个单位到261,就像上面的代码一样,它就会消失。我能够将文本到目前为止定位在页面底部,只有字母的上半部分显示,但是,我甚至无法接近页面的右侧,或者文本将完全消失。我已将SetAutoPageBreak设置为false,因此不会创建新页面,而且我也调整了边距。

4 个答案:

答案 0 :(得分:2)

可能会在游戏中稍晚......

我查看了fpdf.php文件,看起来它增加了1cm的边距。

如果降低它,则可以使文本更接近页面边缘。以下是原始行:

// Page margins (1 cm)
$margin = 28.35/$this->k;

但是如果你把它改成像

那样的东西
$margin = 10/$this->k;

这可以让您更接近文档的边缘。

答案 1 :(得分:0)

我使用单元格定位文本的运气最好,出于某种原因,他们已经证明比简单地在文档上写文本更准确,更容易使用:

$pdf->SetXY(261,200);
$pdf->Cell(0,10,'My text',0,1, 'C');

文档:http://www.fpdf.org/en/doc/cell.htm

答案 2 :(得分:0)

Write()用于流动文本(在内部它使用几个Cell()调用)。如果它到达右边距,则完成自动换行,下一个单词/字符将在左边距处开始换行。 这个词不会消失,但会显示在左下方区域。 您可以通过这个简单的脚本看到流动的角色:

$pdf = new FPDF();
$pdf->AddPage( 'L', 'Letter' );
$pdf->SetAutoPageBreak(false);
$pdf->SetFont('Helvetica');
$pdf->SetXY(261,200);
$pdf->Write(5, 't e s t');
$pdf->Output();

答案 3 :(得分:0)

尝试以下方法:

$pdf->SetAutoPageBreak('auto',0);