簡體   English   中英

PHP FPDF分頁符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM