Php 使用FPDF打印Avery 5160标签

Php 使用FPDF打印Avery 5160标签,php,fpdf,Php,Fpdf,我下载了FPDF 1.7,找到了一个基于Avery 5160标准的脚本,可以自动创建用于打印的PDF标签。除了打印测试页时尺寸不匹配外,它似乎工作得很好。当我测量为每个标签打印的容器盒时,我确认输入的测量值与打印的不匹配 脚本是否有我看不到的错误,或者FPDF是否不够精确,无法处理此问题 function Avery5160($x, $y, &$pdf, $text) { $left = 4.826; // 0.19" in mm $top = 12.7; // 0.5"

我下载了FPDF 1.7,找到了一个基于Avery 5160标准的脚本,可以自动创建用于打印的PDF标签。除了打印测试页时尺寸不匹配外,它似乎工作得很好。当我测量为每个标签打印的容器盒时,我确认输入的测量值与打印的不匹配

脚本是否有我看不到的错误,或者FPDF是否不够精确,无法处理此问题

function Avery5160($x, $y, &$pdf, $text) {
    $left = 4.826; // 0.19" in mm
    $top = 12.7; // 0.5" in mm
    $width = 76.802; // 2.63" in mm
    $height = 25.4; // 1.0" in mm
    $hgap = 3.048; // 0.12" in mm
    $vgap = 0.0;

    $x = $left + (($width + $hgap) * $x);
    $y = $top + (($height + $vgap) * $y);
    $pdf->SetXY($x, $y);
    $pdf->MultiCell($width, 5, $text, 1, 'C');
}

$pdf = new FPDF();
$pdf->Open();
$pdf->AddPage();
$pdf->SetFont('Helvetica', 'B', 10);
$pdf->SetMargins(0, 0);
$pdf->SetAutoPageBreak(false);
$x = $y = 0;

foreach($arr as $text) {
    Avery5160($x, $y, $pdf, $text);

    $y++; // next row
    if($y == 10) { // end of page wrap to next column
        $x++;
        $y = 0;
        if($x == 3) { // end of page
            $x = 0;
            $y = 0;
            $pdf->AddPage();
        }
    }
}
$pdf->Output('Labels.pdf', 'D');

我最近使用FPDF为工作制作了一些自定义标签。为了让它们与我使用的标签对齐,我必须在打印之前在打印对话框中禁用页面缩放。不知道它是否能解决您的问题,但值得一试。

这就是我需要解决的缩放问题

改变 $pdf->AddPage(); 到 $pdf->AddPage('P','Letter')

强迫我们用字母而不是A4

标签的尺寸不正确:

$left = 4.7625; // 0.1875" in mm
$top = 12.7; // 0.5" in mm
$width = 66.675; // 2.625" in mm
$height = 25.4; // 1.0" in mm
$hgap = 3.175; // 0.125" in mm
$vgap = 0.0;

另请注意,从浏览器打印文档有时会使用PDF查看器缩小,并将其设置为按实际大小缩放,而不是按比例缩放以适应打印机对话框。

这似乎是问题所在。有没有一种方法可以通过编程禁用每个PDF文件的该功能,这样我就不必每次都记得了?看着它,它似乎是由阅读器控制的,而不是由文件控制的,所以我不知道您是否能够同时通过在对象中的文档中添加
/ViewerPreferences>
来解决这个问题,你可以控制每个PDF文件。它应该只适用于版本1.7+的文档,但在版本1.3上对我来说效果很好。感谢您的帮助。对于将来尝试这样做的人,onosenday的回答和Lukeyca对的评论提供了一些将此添加到PDF的方法。