[英]PHP FPDF page break
我正在使用PHP和FPDF生成帶有項目列表的PDF。 我有一個循環,在循環中我用GetY()進行了驗證,以檢查何時會中斷。 這項工作正常,但在首頁上沒有。 它正在創建頁面,但在第一頁中,不會像其他頁面一樣使文本中斷至第二頁。 我該怎么辦?
[...]
if ($pdf->GetY() > 230) {
$pdf->AddPage();
}
endwhile;
完整代碼:
if($_GET['print'] == 'ok'){
$idO = $_GET['id'];
require_once "assets/fpdf/fpdf.php";
$pdf = new FPDF( 'P', 'mm', 'A4' );
$pdf->AddPage();
$pdf->SetFillColor( 255, 255, 255 );
$pdf->SetDrawColor( 255, 255, 255 );
$pdf->AliasNbPages();
$pdf->SetAutoPageBreak(true, 30);
$itens = get_field('itens', $idO);
$args = array(
'post_type' => 'categorias',
'posts_per_page' => -1,
'meta_key' => 'ordem',
'orderby' => 'meta_value',
'order' => 'ASC',
'meta_query' => array(
'key' => 'status',
'value' => 'ativo',
'compare' => '='
)
);
$query = new WP_Query($args);
$i=0;
while ($query->have_posts()):$query->the_post();
foreach ($itens as $key => $value){
if(get_field('categoria', $value) == get_the_ID()){
$i++;
$pdf->SetFont( 'Arial', 'B', 10 );
if($i == 1){
$pdf->MultiCell( 0, 10, utf8_decode(html_entity_decode(get_the_title($value))).':', 0, 'C', false );
$imgWidth = 65;
$f = get_field('principal', $value);
$wI = get_field('_wp_attachment_metadata', get_field('foto'.$f, $value))['width'];
$hI = get_field('_wp_attachment_metadata', get_field('foto'.$f, $value))['height'];
$pY = ($imgWidth * $hI) / $wI;
$pX = ($pdf->GetPageWidth() - $imgWidth) / 2;
$img = wp_get_attachment_image_src( get_field('foto'.$f, $value), 'full' )[0];
$pdf->Image($img,$pX,$pdf->GetY(),$imgWidth);
$pdf->Ln( $pY );
$pdf->MultiCell( 0, 5, "Gabinete:", 0, 'L', false );
} else{
$pdf->MultiCell( 0, 5, utf8_decode(html_entity_decode(get_the_title($value))).':', 0, 'L', false );
}
if(get_field('modelo', $value) != ''){
$pdf->Ln(2);
$pdf->SetX(20);
$pdf->SetFont( 'Arial', 'B', 10 );
$pdf->MultiCell( 0, 5, "Modelo: ", 0, 'L', false );
$pdf->SetX(25);
$pdf->SetFont( 'Arial', '', 10 );
$pdf->MultiCell( 0, 5, utf8_decode(get_field('modelo', $value)), 0, 'L', false );
}
if(get_field('fabricante', $value) != ''){
$pdf->Ln(2);
$pdf->SetFont( 'Arial', 'B', 10 );
$pdf->SetX(20);
$pdf->MultiCell( 0, 5, "Fabricante: ", 0, 'L', false );
$pdf->SetX(25);
$pdf->SetFont( 'Arial', '', 10 );
$pdf->MultiCell( 0, 5, utf8_decode(get_field('fabricante', $value)), 0, 'L', false );
}
$pdf->SetX(20);
$pdf->SetFont( 'Arial', 'B', 10 );
$pdf->MultiCell( 0, 10, utf8_decode("Especificações Técnicas:"), 0, 'L', false );
$pdf->SetX(25);
$pdf->SetFont( 'Arial', '', 10 );
$pdf->MultiCell( 0, 5, utf8_decode(html_entity_decode(get_field('descricao', $value))), 0, 'L', false );
if($i > 1){
if(get_field('exibir', $value) != ''){
$pdf->Ln( 2 );
$x=0;
foreach (get_field('exibir', $value) as $key2 => $value2){
$x++;
$imgWidth2 = 20;
$wtP = ($imgWidth2 * $x);
$pX2 = ($x == 1)?($pdf->GetX() + $wtP):($pdf->GetX() + $wtP + 5);
$img2 = wp_get_attachment_image_src( get_field('foto'.$value2, $value), 'full' )[0];
$pdf->Image($img2,$pX2,$pdf->GetY(),$imgWidth2);
}
$pdf->Ln( 25 );
}
}
if ($pdf->GetY() > 265) {
$pdf->AddPage();
}
}
$pdf->Ln( 2 );
}
endwhile;
wp_reset_query();
$pdf->Output('', 'relatorio.pdf');
die();
}
Rob Tudo bem?
而是制作一個IF()並使用GETY(),因為您不使用SETY()嗎? 創建頁腳。
代替:
if ($pdf->GetY() > 265) {
$pdf->AddPage();
}
去做:
// set your value
$this->SetY(-15);
$pdf->AddPage();
看這個官方的例子
Muito Legalvocêsusarem o php eo fpdf !!
似乎“ SetAutoPageBreak”在第一頁上不起作用,僅在其他頁面上起作用。 代碼正在創建頁面,但不要在第一個頁面中斷
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.