解决FPDF库生成Avery 5160标签时的空白页问题
问题根源
你手动维护的行列计数($x、$y变量)和PDF_Label内置的Add_Label()方法逻辑冲突了。这个方法本身已经自动处理标签的换行、换列和分页,你额外加的判断会重复触发AddPage(),导致每生成一个标签就多创建空白页,最终出现大量空白偶数页。
解决方案
删掉所有手动管理$x、$y的代码,完全交给Add_Label()处理分页逻辑。修改后的代码如下:
// SESSION Stuff here } else { require_once('inc/pdf_label.php'); // extends FPDF $pdf = new PDF_Label('5160'); $pdf->AddPage(); $pdf->SetFont('Helvetica', '', 10); $pdf->SetMargins(0, 0); $pdf->Footer(false); $pdf->Header(false); $pdf->SetAutoPageBreak(false); // get DB table info to print labels $sql = "SELECT * FROM `my_table` WHERE `delivery_format`='Postal' && `membership_expires` >= '" . $ninety_days . "' ORDER BY `name_merge` ASC"; if(!$result = $xxxx_db->query($sql)) { die("There was an error running the query [" . $xxxx_db->error . "]"); } while($row = $result->fetch_assoc()) { $dates = "Expires:" . date('n/j/y', strtotime($row['membership_expires'])) . " Joined:" . date('n/j/y', strtotime($row['signup_date'])); $text = sprintf("%s\n%s\n%s\n%s %s %s", $dates, $row['name_merge'], $row['street'], $row['city'], $row['state'], $row['zip']); $pdf->Add_Label($text); } $pdf->Output('my_labels', 'I'); }
补充说明
Avery 5160标签是3列×10行的布局,PDF_Label的Add_Label()方法会自动按顺序填充标签:填满一行自动换列,填满一页自动新建页面。你之前的手动计数相当于重复执行了分页操作,这才导致了大量空白页的出现。
内容的提问来源于stack exchange,提问作者Fuzzy
相关产品推荐
相关产品推荐

