par
kevin254kl » 21 févr. 2017, 15:22
Bonjour à tous,
Pourriez vous m'aider?
J'essaye de faire un générateur de factures, tout fonctionne mais j'ai un problème de header.
Je rempli un formulaire un est envoyé à mon controleur
Code : Tout sélectionner
<?php
require_once '../vendor/autoload.php';
if(filter_input(INPUT_POST, 'generateInvoice', FILTER_SANITIZE_STRING))
{ //Je stocke mes données dans un objet
$corporation = new Model\Corporation();
$corporationName = filter_input(INPUT_POST, 'coporationName', FILTER_SANITIZE_STRING);
$corporationAdress = filter_input(INPUT_POST, 'corporationAdress', FILTER_SANITIZE_STRING);
$corporation->setName($corporationName);
$corporation->setAdress($corporationAdress);
// Pour avoir accès aux informations de mon objet je le sérialize en session
session_start();
$_SESSION['corporation'] = serialize($corporation);
// Ici je récupère le contenu du fichier pdf le problème si j'utilise file_get_content mon php n'ai pas interprété
$content = include('../functions/InvoicePdf.php');
$mpdf=new mPDF('c','A4','','' , 0 , 0 , 0 , 0 , 0 , 0);
$mpdf->SetDisplayMode('fullpage');
$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list
$mpdf->WriteHTML($content);
$mpdf->Output();
}
?>
Mon template facture
Code : Tout sélectionner
<?php
$corporation = unserialize($_SESSION['corporation']);
?>
<!DOCTYPE html>
<html>
<head>
<title>Print Invoice</title>
<style>
*
{
margin:0;
padding:0;
font-family:Arial;
font-size:10pt;
color:#000;
}
body
{
width:100%;
font-family:Arial;
font-size:10pt;
margin:0;
padding:0;
}
p
{
margin:0;
padding:0;
}
#wrapper
{
width:180mm;
margin:0 15mm;
}
.page
{
height:297mm;
width:210mm;
page-break-after:always;
}
table
{
border-left: 1px solid #ccc;
border-top: 1px solid #ccc;
border-spacing:0;
border-collapse: collapse;
}
table td
{
border-right: 1px solid #ccc;
border-bottom: 1px solid #ccc;
padding: 2mm;
}
table.heading
{
height:50mm;
}
h1.heading
{
font-size:14pt;
color:#000;
font-weight:normal;
}
h2.heading
{
font-size:9pt;
color:#000;
font-weight:normal;
}
hr
{
color:#ccc;
background:#ccc;
}
#invoice_body
{
height: 149mm;
}
#invoice_body , #invoice_total
{
width:100%;
}
#invoice_body table , #invoice_total table
{
width:100%;
border-left: 1px solid #ccc;
border-top: 1px solid #ccc;
border-spacing:0;
border-collapse: collapse;
margin-top:5mm;
}
#invoice_body table td , #invoice_total table td
{
text-align:center;
font-size:9pt;
border-right: 1px solid #ccc;
border-bottom: 1px solid #ccc;
padding:2mm 0;
}
#invoice_body table td.mono , #invoice_total table td.mono
{
font-family:monospace;
text-align:right;
padding-right:3mm;
font-size:10pt;
}
#footer
{
width:180mm;
margin:0 15mm;
padding-bottom:3mm;
}
#footer table
{
width:100%;
border-left: 1px solid #ccc;
border-top: 1px solid #ccc;
background:#eee;
border-spacing:0;
border-collapse: collapse;
}
#footer table td
{
width:25%;
text-align:center;
font-size:9pt;
border-right: 1px solid #ccc;
border-bottom: 1px solid #ccc;
}
</style>
</head>
<body>
<div id="wrapper">
<p style="text-align:center; font-weight:bold; padding-top:5mm;">INVOICE</p>
<br />
<table class="heading" style="width:100%;">
<tr>
<td style="width:80mm;">
<h1 class="heading"><?php echo $corporation->getName(); ?></h1>
<h2 class="heading">
<?php echo $corporation->getAdress(); ?>
</h2>
</td>
<td rowspan="2" valign="top" align="right" style="padding:3mm;">
<table>
<tr><td>Invoice No : </td><td>11-12-17</td></tr>
<tr><td>Dated : </td><td>01-Aug-2011</td></tr>
<tr><td>Currency : </td><td>USD</td></tr>
</table>
</td>
</tr>
<tr>
<td>
<b>Buyer</b> :<br />
Client Name<br />
Client Address
<br />
City - Pincode , Country<br />
</td>
</tr>
</table>
<div id="content">
<div id="invoice_body">
<table>
<tr style="background:#eee;">
<td style="width:8%;"><b>Sl. No.</b></td>
<td><b>Product</b></td>
<td style="width:15%;"><b>Quantity</b></td>
<td style="width:15%;"><b>Rate</b></td>
<td style="width:15%;"><b>Total</b></td>
</tr>
</table>
<table>
<tr>
<td style="width:8%;">1</td>
<td style="text-align:left; padding-left:10px;">Software Development<br />Description : Upgradation of telecrm</td>
<td class="mono" style="width:15%;">1</td><td style="width:15%;" class="mono">157.00</td>
<td style="width:15%;" class="mono">157.00</td>
</tr>
<tr>
<td colspan="3"></td>
<td></td>
<td></td>
</tr>
<tr>
<td colspan="3"></td>
<td>Total :</td>
<td class="mono">157.00</td>
</tr>
</table>
</div>
<div id="invoice_total">
Total Amount :
<table>
<tr>
<td style="text-align:left; padding-left:10px;">One Hundred And Fifty Seven only</td>
<td style="width:15%;">USD</td>
<td style="width:15%;" class="mono">157.00</td>
</tr>
</table>
</div>
<br />
<hr />
<br />
<table style="width:100%; height:35mm;">
<tr>
<td style="width:65%;" valign="top">
Payment Information :<br />
Please make cheque payments payable to : <br />
<b>ABC Corp</b>
<br /><br />
The Invoice is payable within 7 days of issue.<br /><br />
</td>
<td>
<div id="box">
E & O.E.<br />
For ABC Corp<br /><br /><br /><br />
Authorised Signatory
</div>
</td>
</tr>
</table>
</div>
<br />
</div>
<htmlpagefooter name="footer">
<hr />
<div id="footer">
<table>
<tr><td>Software Solutions</td><td>Mobile Solutions</td><td>Web Solutions</td></tr>
</table>
</div>
</htmlpagefooter>
<sethtmlpagefooter name="footer" value="on" />
</body>
</html>
Si vous voyez aussi des choses que je peux améliorer dans la logique du code les conseils sont les bienvenues. Merci à vous.
Bonjour à tous,
Pourriez vous m'aider?
J'essaye de faire un générateur de factures, tout fonctionne mais j'ai un problème de header.
Je rempli un formulaire un est envoyé à mon controleur
[code]<?php
require_once '../vendor/autoload.php';
if(filter_input(INPUT_POST, 'generateInvoice', FILTER_SANITIZE_STRING))
{ //Je stocke mes données dans un objet
$corporation = new Model\Corporation();
$corporationName = filter_input(INPUT_POST, 'coporationName', FILTER_SANITIZE_STRING);
$corporationAdress = filter_input(INPUT_POST, 'corporationAdress', FILTER_SANITIZE_STRING);
$corporation->setName($corporationName);
$corporation->setAdress($corporationAdress);
// Pour avoir accès aux informations de mon objet je le sérialize en session
session_start();
$_SESSION['corporation'] = serialize($corporation);
// Ici je récupère le contenu du fichier pdf le problème si j'utilise file_get_content mon php n'ai pas interprété
$content = include('../functions/InvoicePdf.php');
$mpdf=new mPDF('c','A4','','' , 0 , 0 , 0 , 0 , 0 , 0);
$mpdf->SetDisplayMode('fullpage');
$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list
$mpdf->WriteHTML($content);
$mpdf->Output();
}
?>
[/code]
Mon template facture
[code]<?php
$corporation = unserialize($_SESSION['corporation']);
?>
<!DOCTYPE html>
<html>
<head>
<title>Print Invoice</title>
<style>
*
{
margin:0;
padding:0;
font-family:Arial;
font-size:10pt;
color:#000;
}
body
{
width:100%;
font-family:Arial;
font-size:10pt;
margin:0;
padding:0;
}
p
{
margin:0;
padding:0;
}
#wrapper
{
width:180mm;
margin:0 15mm;
}
.page
{
height:297mm;
width:210mm;
page-break-after:always;
}
table
{
border-left: 1px solid #ccc;
border-top: 1px solid #ccc;
border-spacing:0;
border-collapse: collapse;
}
table td
{
border-right: 1px solid #ccc;
border-bottom: 1px solid #ccc;
padding: 2mm;
}
table.heading
{
height:50mm;
}
h1.heading
{
font-size:14pt;
color:#000;
font-weight:normal;
}
h2.heading
{
font-size:9pt;
color:#000;
font-weight:normal;
}
hr
{
color:#ccc;
background:#ccc;
}
#invoice_body
{
height: 149mm;
}
#invoice_body , #invoice_total
{
width:100%;
}
#invoice_body table , #invoice_total table
{
width:100%;
border-left: 1px solid #ccc;
border-top: 1px solid #ccc;
border-spacing:0;
border-collapse: collapse;
margin-top:5mm;
}
#invoice_body table td , #invoice_total table td
{
text-align:center;
font-size:9pt;
border-right: 1px solid #ccc;
border-bottom: 1px solid #ccc;
padding:2mm 0;
}
#invoice_body table td.mono , #invoice_total table td.mono
{
font-family:monospace;
text-align:right;
padding-right:3mm;
font-size:10pt;
}
#footer
{
width:180mm;
margin:0 15mm;
padding-bottom:3mm;
}
#footer table
{
width:100%;
border-left: 1px solid #ccc;
border-top: 1px solid #ccc;
background:#eee;
border-spacing:0;
border-collapse: collapse;
}
#footer table td
{
width:25%;
text-align:center;
font-size:9pt;
border-right: 1px solid #ccc;
border-bottom: 1px solid #ccc;
}
</style>
</head>
<body>
<div id="wrapper">
<p style="text-align:center; font-weight:bold; padding-top:5mm;">INVOICE</p>
<br />
<table class="heading" style="width:100%;">
<tr>
<td style="width:80mm;">
<h1 class="heading"><?php echo $corporation->getName(); ?></h1>
<h2 class="heading">
<?php echo $corporation->getAdress(); ?>
</h2>
</td>
<td rowspan="2" valign="top" align="right" style="padding:3mm;">
<table>
<tr><td>Invoice No : </td><td>11-12-17</td></tr>
<tr><td>Dated : </td><td>01-Aug-2011</td></tr>
<tr><td>Currency : </td><td>USD</td></tr>
</table>
</td>
</tr>
<tr>
<td>
<b>Buyer</b> :<br />
Client Name<br />
Client Address
<br />
City - Pincode , Country<br />
</td>
</tr>
</table>
<div id="content">
<div id="invoice_body">
<table>
<tr style="background:#eee;">
<td style="width:8%;"><b>Sl. No.</b></td>
<td><b>Product</b></td>
<td style="width:15%;"><b>Quantity</b></td>
<td style="width:15%;"><b>Rate</b></td>
<td style="width:15%;"><b>Total</b></td>
</tr>
</table>
<table>
<tr>
<td style="width:8%;">1</td>
<td style="text-align:left; padding-left:10px;">Software Development<br />Description : Upgradation of telecrm</td>
<td class="mono" style="width:15%;">1</td><td style="width:15%;" class="mono">157.00</td>
<td style="width:15%;" class="mono">157.00</td>
</tr>
<tr>
<td colspan="3"></td>
<td></td>
<td></td>
</tr>
<tr>
<td colspan="3"></td>
<td>Total :</td>
<td class="mono">157.00</td>
</tr>
</table>
</div>
<div id="invoice_total">
Total Amount :
<table>
<tr>
<td style="text-align:left; padding-left:10px;">One Hundred And Fifty Seven only</td>
<td style="width:15%;">USD</td>
<td style="width:15%;" class="mono">157.00</td>
</tr>
</table>
</div>
<br />
<hr />
<br />
<table style="width:100%; height:35mm;">
<tr>
<td style="width:65%;" valign="top">
Payment Information :<br />
Please make cheque payments payable to : <br />
<b>ABC Corp</b>
<br /><br />
The Invoice is payable within 7 days of issue.<br /><br />
</td>
<td>
<div id="box">
E & O.E.<br />
For ABC Corp<br /><br /><br /><br />
Authorised Signatory
</div>
</td>
</tr>
</table>
</div>
<br />
</div>
<htmlpagefooter name="footer">
<hr />
<div id="footer">
<table>
<tr><td>Software Solutions</td><td>Mobile Solutions</td><td>Web Solutions</td></tr>
</table>
</div>
</htmlpagefooter>
<sethtmlpagefooter name="footer" value="on" />
</body>
</html>
[/code]
Si vous voyez aussi des choses que je peux améliorer dans la logique du code les conseils sont les bienvenues. Merci à vous.