2016-05-31 6 views
-1

Ich entwickle ein Modul auf einer Website, um einige Berichte in pdf zu exportieren. Nach der Suche auf Google, welche Art von Bibliothek mir helfen konnte, fand ich DOMPDF (php).DomPDF funktioniert nicht mit div-Tabellen?

Ich erstelle und zeige korrekt das pdf, aber ich muss den HTML mit Tabellen, tr und td schaffen, weil, wenn ich versuche, dasselbe mit divs mit Anzeigeoption anzuzeigen, die auf Tabelle, Tabellenzeile oder Tabellenzelle gesetzt wird funktioniert nicht und zeigt die Daten nicht in einem korrekten tabellierten Format an.

Das ist ein Problem, weil ich in den Ansichten versuche, divs und responsiv Design zu verwenden, aber wenn ich als Parameter dieses HTML übergeben, funktioniert es nicht. Während ich dies teste, musste ich eine Ansicht mit beiden HTML-Codes erstellen. Die erste für die Ansicht wird mit dem div-Entwurf und die andere mit Tabellen-Tags dargestellt, die als Parameter an dompdf render übergeben werden.

Könnte jemand ein Programmierproblem, Dompdf Problem oder etwas anderes?

Jeder Vorschlag ist willkommen.

Hier den Code

   <link href="pdf.css" rel="stylesheet" type="text/css" media="screen" /> 
       <div class="tabledivinscripcion"> 
       <div class="titular-inscripcion"> 
         <img id="header" class="headers" src="ImagenesNoticias/'.$row_headers["timestamp"].'_'.$row_headers["header"].'"/> 
       </div> 

       <table> 
        <tr> 
         <td colspan="1"> <b>INFORME DE:</b>'.$row["nombreInforme"].'</td> 
         <td colspan="1" > <b>Categoría:</b>'.$row["categoria"].'</td> 
        </tr>     
        <tr> 
         <td colspan="1"> <b>Fecha:</b>'.$row["fecha"].'</td> 
         <td colspan="1"> <b>Hora:</b>'.$row["hora"].'</td> 
        </tr> 
        <tr> 
         <td colspan="1"> <b>Nombre:</b>'.$row["nombre"].'</td> 
         <td colspan="1"> <b>Licencia:</b>'.$row["licencia"].'</td> 
        </tr> 
        <tr> 
         <td colspan="1"> <b>Categoría:</b>'.$row["categoria2"].'</td> 
         <td colspan="1"> <b>Manga:</b>'.$row["manga"].'</td> 
        </tr> 
        <tr> 
         <td colspan="2"> <b>Hora del hecho::</b>'.$row["horaHecho"].'</td> 
        </tr> 
        <tr> 
         <td colspan="2"> <b>Descripción:</b> 
          <br> 
          <p class="justified">'.$row["descripcion"].'</p> 
          <br> 
         </td> 
        </tr> 
        <div class="titular-inscripcion foot"> 
          <img id="footer" class="headers" src="ImagenesNoticias/'.$row_headers["timestamp"].'_'.$row_headers["footer"].'"/> 
        </div> 

Hier die CSS

.headers{ 
    width:100%; 
    } 
    td{ 
    //border:1px solid black; 
    text-align:left; 
    height:25px; 
    } 
tr{ 
    //border:1px solid red; 
} 
table{ 
    // border:1px solid green; 
    height:75%; 
    width:85%; 
    margin-left:auto; 
    margin-right:auto 
} 
.justified{ 
    text-align:justify; 
} 
.tabledivinscripcion{ 
    background:#FFF; 
    margin-bottom:20px; 
    padding:0px; 
    position:relative; 
    width:100%; 
    min-height:100%; 
    margin-left:auto; 
    margin-right:auto; 
} 
.foot{ 
    position: absolute; 
bottom: 0; 
} 
.pdescripcion{ 
    text-align: justify; 
    display:inline-block; 
    padding-left:10px; 
    padding-right:10px; 
} 
.titular-inscripcion{ 
    margin-left:auto; 
    margin-right:auto; 
    text-align:center; 
    display:table; 
    width: 100%; /*Optional*/ 
    table-layout: fixed; /*Optional*/ 
} 

Dieser Code angebracht ist die endgültige Version des pdf. Um dasselbe mit divs zu tun, habe ich versucht, div mit display: table als Tabellen-Tag und div mit display: table-row als tr-Tag und schließlich div mit display: table-cell als td-Tag zu setzen.

Vielen Dank.

+0

Bitte teilen Sie ein Beispiel des HTML/CSS, das Sie verwenden. – BrianS

Antwort

0

Dompdf funktioniert mit Tabellen, die mit den Anzeigetypen der CSS-Tabelle erstellt wurden. Im folgenden Beispiel sollte eine Tabelle mit 100% Breite und zwei Spalten angezeigt werden. Sie werden feststellen, dass tabellenspezifische Attribute entsprechend angewendet werden. In der ersten Zeile und einer einzelnen überspannenden Spalte in der zweiten Zeile.

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
 
    <style> 
 
    .table { display: table; width: 100%; border-collapse: collapse; } 
 
    .table-row { display: table-row; } 
 
    .table-cell { display: table-cell; border: 1px solid black; padding: 1em; } 
 
    </style> 
 
</head> 
 
<body> 
 
    <div class="table"> 
 
    <div class="table-row"> 
 
     <div class="table-cell"><b>INFORME DE:</b>dompdf</div> 
 
     <div class="table-cell"><b>Categoría:</b>tables</div> 
 
    </div> 
 
    <div class="table-row"> 
 
     <div class="table-cell" colspan="2"> <b>Hora del hecho:</b>9:00</div> 
 
    </div> 
 
    </div> 
 
</body> 
 
</html>

Was sie nicht als von der aktuellen Version (0.7.0 als von diesem Post) unterstützt ist CSS-Deklarationen, die auf Responsive Design beziehen, wie etwa Medienanfragen (über diejenigen, die einen spezifischen Targeting Anzeigetyp, zB @media print).

Anstatt eine Seite mit mehreren Strukturelementen (Tabellen und div-Tabellen) zu erstellen, sollten Sie mehrere Stylesheets für die verschiedenen Anzeigeumgebungen erstellen. Sie können dompdf in Ihrem Stylesheet immer anvisieren, indem Sie das relevante CSS mit @media dompdf { ... } umgeben.