2017-06-14 4 views
0

既存のPDFにテキストや画像を書き込む必要があります。このPDFは、幅が2枚、高さが5枚のカード10枚の両面からなる2ページで構成されています。 私はその目的のためにFPDIを使用します。私は最後の問題が残っています:y = 232の下に画像(またはテキスト)を挿入することはできません。下に1pxを挿入すると、画像は新しいページに移動します。どのように私はそれを新しいページに行くことなく私のイメージを挿入することができますか? ページはA4なので、動作するはずです。Symfony - FPDIは画像の下限を挿入できません

マイコード:

$em = $this->getDoctrine()->getManager(); 

    $users = $em->getRepository(Admin::class)->findAll(); 

    $pdf = new \FPDI(); 
    $pageCount = $pdf->setSourceFile($this->get('kernel')->getRootDir() . '/../web/bundles/pacesuser/pdf/Cartes.pdf'); 

    // Variable to group users by 10 for loop 
    $iteration = 0; 

    // 1st card element positions 
    $xNom = 33.5; 
    $yNom = 24.5; 
    $xPrenom = 39; 
    $yPrenom = 30.5; 
    $xNumero = 49; 
    $yNumero = 36; 
    $xImage = 66.5; 
    $yImage = 14.5; 

    // For each group of 10 users, add pages of initial PDF 
    for ($i = 1; $i <= count($users)/10 +1; $i++) { 
     // Iterate through pages of initial PDF 
     for ($pageNo = 1; $pageNo <= $pageCount; $pageNo++) { 
      // import a page 
      $templateId = $pdf->importPage($pageNo); 
      // get the size of the imported page 
      $size = $pdf->getTemplateSize($templateId); 

      // create a page (A4 format) 
      $pdf->AddPage('P', array($size['w'], $size['h'])); 

      // use the imported page 
      $pdf->useTemplate($templateId); 

      // If page 1 
      if ($pageNo == 1) { 

       // Variables to know in which row we are 
       $rowPaire = 0; 
       $rowImpaire = 0; 

       // Condition to solve the last page problem (undefined index) 
       if (count($users) >= $iteration+10) { 
        // For each user in a group of 10 users 
        for ($userNo = $iteration; $userNo < $iteration + 10; $userNo++) { 
         // If loop first 
         if ($userNo == $iteration) { 
          $pdf->SetFont('Helvetica', '', 10); 
          $pdf->SetXY($xNom, $yNom); 
          $pdf->Write(10, $users[$userNo]->getNom()); 
          $pdf->SetXY($xPrenom, $yPrenom); 
          $pdf->Write(10, $users[$userNo]->getPrenom()); 
          $pdf->SetFont('Helvetica', '', 12); 
          $pdf->SetXY($xNumero, $yNumero); 
          $pdf->Write(10, $users[$userNo]->getUsername()); 
          $pdf->Image($this->get('kernel')->getRootDir() . '/../web/uploads/documents/section8-image.png', $xImage, $yImage, 33.5, 45); 
          $rowImpaire += 1; 
         } 
         // Elseif loop even 
         elseif ($userNo % 2 == 0) { 
          $pdf->SetFont('Helvetica', '', 10); 
          $pdf->SetXY($xNom, $yNom+$rowImpaire*55.5); 
          $pdf->Write(10, $users[$userNo]->getNom()); 
          $pdf->SetXY($xPrenom, $yPrenom+$rowImpaire*55.5); 
          $pdf->Write(10, $users[$userNo]->getPrenom()); 
          $pdf->SetFont('Helvetica', '', 12); 
          $pdf->SetXY($xNumero, $yNumero+$rowImpaire*55.5); 
          $pdf->Write(10, $users[$userNo]->getUsername()); 
          $pdf->Image($this->get('kernel')->getRootDir() . '/../web/uploads/documents/section8-image.png', $xImage, 231, 33.5, 45); 
          $rowImpaire += 1; 
         } 
         else { 
          $pdf->SetFont('Helvetica', '', 10); 
          $pdf->SetXY($xNom + 87, $yNom + $rowPaire * 55.5); 
          $pdf->Write(10, $users[$userNo]->getNom()); 
          $pdf->SetXY($xPrenom + 87, $yPrenom + $rowPaire * 55.5); 
          $pdf->Write(10, $users[$userNo]->getPrenom()); 
          $pdf->SetFont('Helvetica', '', 12); 
          $pdf->SetXY($xNumero + 87, $yNumero + $rowPaire * 55.5); 
          $pdf->Write(10, $users[$userNo]->getUsername()); 
          $pdf->Image($this->get('kernel')->getRootDir() . '/../web/uploads/documents/section8-image.png', $xImage + 87, $yImage + $rowPaire * 55.5, 33.5, 45); 
          $rowPaire += 1; 
         } 
        } 
       } 
       // Last page loop 
       else { 
        for ($userNo = $iteration; $userNo < count($users); $userNo++) { 
         <!-- Same code as above --> 
        } 
       } 
       $iteration += 10; 
      } 
     } 
    } 

// Output the new PDF 
    $pdf->Output(); 

答えて

0

自動改ページを無効にするか、下の余白を変更するにはSetAutoPageBreak()を使用してください。

+0

私はこの仕事を一日中やろうとしましたが、それはとても簡単です!どうもありがとう ! –

関連する問題