2016-12-05 2 views
0

Das ist mein folgende Stück Code erzeugt pdfDOMPDF erzeugte pdf Ergebnis immer vermasselt

$values = $Viewer->getPrintData($_GET['id']); 

if($values->num_rows > 0){ 
    $html_data = ""; 
    while($row = $values->fetch_assoc()){ 
     switch($row['birth_type_id']) 
     { 
      case 1: $hospital_id = $row['hospital_id']; 
        $home_detail = "None"; 
        $other_detail = "None"; 
        $birth_formatted_type = "Birth at : ".$Viewer->getHospitalName($row['hospital_id']); 
        break; 

      case 2: $hospital_id = "None"; 
        $home_detail = $row['home_detail']; 
        $other_detail = "None"; 
        $birth_formatted_type = "|| Birth at Home || <br />Home Details Are : ".$row['home_detail']; 
        break; 

      case 3: $hospital_id = "None"; 
        $home_detail = "None"; 
        $other_detail = $row['other_detail']; 
        $birth_formatted_type = "|| Birth at Other Location || <br />Details Are : ".$row['other_detail']; 
        break; 

      default: 
        $hospital_id = "None"; 
        $home_detail = "None"; 
        $other_detail = "None"; 
        break; 
     } 

     $html_data .= " 
        <html> 
          <head> 
           <style> 
            * 
              { 
               font-family: 'oswald'; 
              } 
            @page 
              { 
               margin: 10px; 
              } 
            body, table 
              { 
               margin: 10px; 
              } 
           </style> 
          </head> 
          <body> 
           <br /> 
           <center> 
            <h2> 
              Birth Certificate Details 
            </h2> 
           </center> 
           <div style='width: 100%;'> 
            <table> 
              <tr> 
               <td style='width: 350px;'> 
                <u> 
                  <h3>Baby Related Details</h3> 
                </u> 
                Registration Number: ".$row['registration_number']."<br /> 
                Birth Date: ".$row['birth_date']."<br /> 
                Birth Time: ".$row['birth_time']."<br /><br /> 
                Gender: ".$Viewer->getGender($row['gender_id'])."<br /> 
                Baby's Full Name: ".$row['baby_name']."<br /> 
                Father's Full Name: ".$row['fathers_name']."<br /> 
                Father's Aadhar ID: ".$row['fathers_uid']."<br /> 
                Mother's Full Name: ".$row['mothers_name']."<br /> 
                Mother's Aadhar ID: ".$row['mothers_uid']."<br /> 
                While Baby's Birth Parents Address: ".$row['while_baby_birth_parents_address']."<br /> 
                Parent's Permanent Address: ".$row['parents_permanent_address']."<br /> 
               </td> 
               <td style='width: 350px;'> 
                <u> 
                  <h3>Parents Details</h3> 
                </u> 
                {$birth_formatted_type}<br /> 
                Religion: ".$row['religion']."<br /><br /> 
                Taluka: ".$Viewer->getTalukaDetail($row['taluka_id'])."<br /> 
                City: ".$Viewer->getCityDetail($row['city_id'])."<br /> 
                Pincode: ".$Viewer->getPincodeDetail($row['pincode_id'])." 
                <br /><br /> 
                Father's Education Level: ".$Viewer->getEducationLevel($row['id_of_fathers_education_level'])."<br /> 
                Mother's Education Level: ".$Viewer->getEducationLevel($row['id_of_mothers_education_level'])."}<br /> 
                Father's Occupation: ".$Viewer->getOccupationDetail($row['id_of_fathers_occupation'])."<br /> 
                Mother's Occupation: ".$Viewer->getOccupationDetail($row['id_of_mothers_occupation'])." 

                <u> 
                  <h3><br />Other Details</h3> 
                </u>  
                Mother's Marriage Age: ".$row['mothers_marriage_age']."<br /> 
                While Baby's Birth Mother's Age: ".$row['while_birth_mothers_age']."<br /> 
                Alive Deliveries Upto Now: ".$row['total_alive_deliveries_uptill_date']."<br /><br /> 
                Birth Place/Person: ".$Viewer->getBirthPlaceOrPerson($row['id_of_birth_place_person'])."<br /> 
                Mother's Delivery Type: ".$Viewer->getDeliveryType($row['id_of_delivery_type'])."<br /> 
                Child's Weight: ".$row['child_weight_while_birth']."<br /> 
                Pregnancy Duration: ".$row['pregnancy_duration']." 
               </td> 
              </tr> 
            </table> 
           </div> 
          </body> 
        </html>"; 
    } 

    require "../dompdf/dompdf_config.inc.php"; 
    $dompdf = new DOMPDF(); 
    $dompdf->load_html($html_data); 
    $dompdf->render(); 
    $dompdf->stream("PD_.pdf"); 
} 

I Gesamtzahl von 29 Einträge haben, die auf einzelne Seite gedruckt werden müssen. Das Problem ist, wenn das erste Ergebnis auf der Seite gedruckt wird es ab der zweiten Seite auf den Stationen in Ordnung ist das Ergebnis purzeln wird, wie unten

Drucke von 1.er Seite

Print of 1st page

im Bild gezeigt drucken von zweiten Seite erzeugt wird, auf den Stationen wird wie dieser

Print being generated from 2nd page on wards

Bitte jemand helfen.

+0

Ihre HTML-Struktur bricht wahrscheinlich, wenn der Inhalt zwischen Seiten aufgeteilt wird. Sie sollten sicherstellen, dass der HTML-Code, den Sie an dompdf übergeben, validiert wird. Darüber hinaus ist es schwer zu sagen, ohne ein Beispiel des tatsächlichen HTML zu sehen, das dompdf verarbeitet (im Gegensatz zu PHP, das HTML erzeugt). – BrianS

+0

Ich werde jedoch sagen, dass Sie mehrere HTML-Dokumente in einem einzigen Dokument verketten. Sie könnten versuchen, alles, was nicht Körperinhalt ist, außerhalb der While-Schleife zu bewegen. – BrianS

Antwort

0

Ich hatte auch einige Probleme mit dompdf, am Ende haben wir uns entschieden, https://github.com/KnpLabs/snappy zu verwenden - funktioniert hervorragend zum Erstellen neuer PDFs und noch besser beim Konvertieren von HTML in PDF.

$template = $this->twig->loadTemplate($data['template']); 
    $rendered = $template->renderBlock('bodyHtml', ['data' => $data['data']]); 

    return $this->snappy->getOutputFromHtml($message); 

vielleicht wird dies besser für Sie arbeiten.