我尝试编写一个PDF编写CSS和HTML,但我的CSS没有出现在我的PDF中.唯一考虑的是font-size和font-color.
我给你代码(抱歉,它有点长......)
$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();
Run Code Online (Sandbox Code Playgroud)
Álv*_*lez 76
首先,您应该注意PDF和HTML以及几乎没有任何共同点的不同格式.如果TCPDF允许您使用HTML和CSS提供输入数据,那是因为它为这两种语言实现了一个简单的解析器,并试图弄清楚如何将其转换为PDF.因此,TCPDF仅支持HTML和CSS规范的一小部分是合乎逻辑的,即使在支持的内容中,它也可能不如一流的Web浏览器那么完美.
说,问题是:支持什么,什么不支持?文档基本上跳过了这个问题,让你享受试错法.
看一下源代码,我们可以看到有一个被称为受保护的方法TCPDF::getHtmlDomArray(),其中包括解析CSS声明.我可以看到类似的东西font-family,list-style-type或者text-indent但是没有margin或者我能看到的东西,而且padding最终,它根本就没有float.
总结一下:使用TCPDF,您可以使用CSS进行一些基本格式化.如果您需要从HTML转换为PDF,那么这是错误的工具.(如果是这种情况,我可以建议wkhtmltopdf吗?)
小智 10
支持的标签是:a,b,blockquote,br,dd,del,div,dl,dt,em,font,h1,h2,h3,h4,h5,h6,hr,i,img,li,ol,p, pre,small,span,strong,sub,sup,table,tcpdf,td,th,thead,tr,tt,u,ul
所有HTML属性必须用双引号括起来
小智 8
我最近遇到了同样的问题,TCPDF与我的CSS一起工作.看看下面的代码.在我将标准CSS更改为PHP可以理解的格式后,它对我有用
下面的代码示例
$table = '<table width="100%" cellspacing="0" cellpadding="55%">
<tr valign="bottom">
<td class="header1" rowspan="2" align="center" valign="middle"
width="6%">Category</td>
<td class="header1" rowspan="2" align="center" valign="middle"
width="26%">Project Description</td>
</tr></table>';
Run Code Online (Sandbox Code Playgroud)
TCPDF 6.2.11(2015-08-02)
<style>标记中包含某些内容时将无法使用,但是如果将它们添加style=""到HTML标记中的属性中,则它们将无法使用。例如表格填充-这不起作用:
table {
padding: 5px;
}
Run Code Online (Sandbox Code Playgroud)
这样做:
<table style="padding: 5px;">
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
108674 次 |
| 最近记录: |