TCPDF not render all CSS properties
我尝试制作一个写CSS和HTML的PDF,但是我的CSS没有出现在我的PDF中。 仅考虑字体大小和字体颜色。
我给你代码(对不起,这有点长...)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 | $config = sfTCPDFPluginConfigHandler::loadConfig('my_config'); $doc_title ="Fiche Logement"; $html = <<<EOF <style> .informations { padding: 10px; margin: 10px; border: 1px dotted black;} .informations table { margin-top: 10px;} #modif { margin: 20px; text-align: left; float: right;} #modif th { padding-left: 10px;} #modif td { padding-left: 10px;} #adresse { width: 307px; float: left;} #reservataire { width: 307px; float: right;} #intergen { width: 307px; float: right;} #infos { width: 290px; float: left;} #handicap { padding-bottom: 12px; width: 324px; float: right;} #charges { margin-bottom: 20px; width: 307px; float: left;} #loyer { width: 307px; float: right;} #commentaires { clear: both;} h2 { font-variant: small-caps; text-align: center; font-size: 19px; font-weight: bold; padding: 0px 0px 2px 5px; margin: 15px 0px 20px 0px; color: #000000; border-top: 1px dotted black; border-bottom: 1px dotted black;} h3 { width: 250px; font-variant: small-caps; font-size: 15px; font-weight: bold; padding: 0px 0px 0px 5px; margin: 0px; color: #225D6D; border-top: 1px dotted black; border-bottom: 1px dotted black;} </style> Intergénérationnel <table> <tr> <th>Intergénérationnel :</th> <td><?php echo \\$logement->getIntergen() ?></td> </tr> </table> Informations logement <table> <tr> <th>Batiment :</th> <td><?php echo \\$logement->Parclogement->getBatiment() ?></td> </tr> <tr> <th>Taille :</th> <td><?php echo \\$logement->getTaille() ?></td> </tr> <tr> <th>Type :</th> <td><?php echo \\$logement->getTypelog() ?></td> </tr> <tr> <th>Surface habitable :</th> <td><?php if(\\$logement->getSurfacehab() == 0){ echo 'Non Spécifié';} else {echo \\$logement->getSurfacehab()." m2";} ?></td> </tr> <tr> <th>Chauffage :</th> <td><?php echo \\$logement->getChauffage() ?></td> </tr> <tr> <th>Ascenseur :</th> <td><?php echo \\$logement->getAscenseur() ?></td> </tr> </table> Infrastructures handicapés <table> <tr> <th>Immeuble accessible :</th> <td><?php echo \\$logement->getAccessibl() ?></td> </tr> <tr> <th>Ascenceur accessible :</th> <td><?php echo \\$logement->getAscenseuracc() ?></td> </tr> <tr> <th>Logement adaptable :</th> <td><?php echo \\$logement->getAdaptable() ?></td> </tr> <tr> <th>Logement adapté :</th> <td><?php echo \\$logement->getAdapte() ?></td> </tr> </table> EOF; //create new PDF document (document units are set by default to millimeters) $pdf = new sfTCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true); // set document information $pdf->SetCreator(PDF_CREATOR); $pdf->SetAuthor(PDF_AUTHOR); $pdf->SetTitle($doc_title); //set default header data $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING); //set margins $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); $pdf->SetHeaderMargin(PDF_MARGIN_HEADER); $pdf->SetFooterMargin(PDF_MARGIN_FOOTER); //set auto page breaks $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); //set header and footer fonts $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); //set default monospaced font $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); // Fixe la taille de la page $pdf->SetDisplayMode(90); //initialize document $pdf->SetFont('helvetica', '', 10); $pdf->AddPage(); // output some HTML code $pdf->writeHTML($html , true, false, true, false, ''); //reset pointer to the last page $pdf->lastPage(); // Close and output PDF document $pdf->Output('fichelogement.pdf', 'I'); // Stop symfony process throw new sfStopException(); |
首先,您应该注意PDF和HTML以及几乎没有共同点的不同格式。如果TCPDF允许您使用HTML和CSS提供输入数据,那是因为它为这两种语言实现了一个简单的解析器,并试图弄清楚如何将其转换为PDF。因此,合乎逻辑的是,TCPDF仅支持HTML和CSS规范的一小部分,即使在受支持的内容中,它也可能不如一流的Web浏览器那么完美。
就是说,问题是:支持什么,不支持什么?该文档基本上跳过了问题,让您享受尝试和错误的方法。
看一下源代码,我们可以看到有一个名为
总结:使用TCPDF,您可以使用CSS进行一些基本格式设置。如果您需要从HTML转换为PDF,那是错误的工具。 (如果是这种情况,我可以建议wkhtmltopdf吗?)