TCPDF不会呈现所有CSS属性

我尝试制作一个写CSS和HTML的PDF,但是我的CSS没有出现在我的PDF中。仅考虑字体大小和字体颜色。

我给你代码(对不起,这有点长…)

$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>

<div id='intergen' class='informations'>

<h3>Intergénérationnel</h3>

<table>

<tr>

<th>Intergénérationnel :</th> <td><?php echo \$logement->getIntergen() ?></td>

</tr>

</table>

</div>

<div id='infos' class='informations'>

<h3>Informations logement</h3>

<table>

<tr>

<th>Bâtiment :</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(). " m²";} ?></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>

</div>

<div id='handicap' class='informations'>

<h3>Infrastructures handicapés</h3>

<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>

</div>

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规范的一小部分,即使在受支持的内容中,TCPDF也不如一流的Web浏览器那么完美。

就是说,问题是:支持什么,不支持什么?该文档基本上跳过了该问题,让您享受试错法。

看一下源代码,我们可以看到有一个受保护的方法TCPDF::getHtmlDomArray(),其中包括解析CSS声明。我能看到的东西一样font-

familylist-style-typetext-

indent但没有marginpadding只要我能看到,并明确,有没有float在所有。

总结:使用TCPDF,您可以使用CSS进行一些 基本

格式设置。如果您需要从HTML转换为PDF,那是错误的工具。(如果是这种情况,我可以建议wkhtmltopdf吗?)

以上是 TCPDF不会呈现所有CSS属性 的全部内容, 来源链接: utcz.com/qa/426053.html

回到顶部