Nun, FPDF funktioniert irgendwie wie eine Schreibmaschine, in dem es einen X, Y Punkt hat, in den es schreibt, den Sie manuell bewegen können oder es für Sie tun lassen.
Ich weiß nicht, ob das große Leerzeichen auf der linken Seite erforderlich ist. In diesem Fall müssten Sie vor jedem Schreibvorgang $ this-> SetX ($ coordinate) aufrufen.
Sie sollten etwas tun:
class InvoicePDF extends FPDF //Create a new class to contain the header/footer/etc. which extends FPDF
{
public function Header
{
//Header stuff goes here, like the big Invoice
$this->SetY(10); //SetY 10 units down from the top, experiment with distance to get appropriate distance
$this->SetFont('Arial','',20); //Set Font to Arial/Helvetica 20 pt font
$this->SetTextColor(0,0,0); //Set Text Color to Black;
$this->Cell(0,9,"INVOICE",0,0,'R'); //Write the word INVOICE Right aligned in a box the width of the page, will put it at the far right of the page
}
public function Footer
{
//any footer stuff goes here
}
public function FillHeadInfo($info) //$info would be an array of the stuff to fill the small table at the top
{
$this->SetY(0); //reset the Y to the original, since we moved it down to write INVOICE
$this->SetFont('Arial','',12);
$this->SetFillColor(224,224,224); //Set background of the cell to be that grey color
$this->Cell(20,12,"Order #",1,0,'C',true); //Write a cell 20 wide, 12 high, filled and bordered, with Order # centered inside, last argument 'true' tells it to fill the cell with the color specified
$this->Cell(20,12,"Coding",1,0,'C',true);
$this->Cell(20,12,"Sales Code",1,1,'C',true); //the 1 before the 'C' instead of 0 in previous lines tells it to move down by the height of the cell after writing this
$this->Cell(20,12,$info['ordernum'],1,0,'C');
$this->Cell(20,12,$info['coding'],1,0,'C');
$this->Cell(20,12,$info['salescode'],1,1,'C');
$this->Cell(40,12,"Name & Address",1,0,'C',true);
$this->Cell(20,12,"Date",1,1,'C',true);
$y = this->GetY(); //Need the current Y value to reset it after the next line, as multicell automatically moves down after write
$x = this->GetX(); // Might need the X too
$this->MultiCell(40,12,$info['customername'] . "\n" . $info['address'] . "\n" . $info['city'] . ', ' . $info['state'] . ' ' . $info['zip'],1,'L',false); //I assume the customer address info is broken up into multiple different pieces
$this->SetY($y); //Reset the write point
$this->SetX($x + 40); //Move X to $x + width of last cell
$this->Cell(20,36,date("format",strtotime($info['date'])),1,1,'C'); //Might be easier to use $this->Rect() to draw rectangles for address and date and then write the address and date into them without borders using SetX and SetY, if the borders don't line up or whatever
}
public function fillItems($items)
{
//You'd build the items list much the same way as above, using a foreach loop or whatever
//Could also easily combine this function and the one above
}
}
Dann, wenn die PDF-Erstellung Sie so etwas tun würde:
require_once('fpdf.php');
require_once('class.invoicepdf.php');
//Get whatever info you need to fill the pdf
$pdf = new InvoicePDF('P','mm','Letter');
$pdf->AddPage();
$pdf->FillHeadInfo($info); //Could also pass $_POST and rely on the keys of the $_POST array
$pdf->FillItems($items);
$pdf->Output('filename.pdf','I');
By the way, würde ich vorschlagen, anstatt zu versuchen, Um es aus $ _POST zu schreiben, speichern Sie die Bestellung in der DB, dann übergeben Sie die Bestell-ID zusammen mit dem Skript, um die PDF über einen Link und $ _GET zu schreiben, und lassen Sie das Skript die Informationen aus der DB abrufen, so können Sie Wählen Sie nur die Informationen aus, die Sie benötigen.
Was ist das spezifische Problem, das Sie haben? – deceze
ich kann nicht scheinen, um die Tabellen zu machen ... wie zum Beispiel, wenn ich das Tutorial von fpdf folgen sie zeigen Text extrahiert aus countries.txt ... aber ich möchte den Text von $ _POST Funktion..ich habe dies http://puertoricohoops.net/invoicestimate/pdf/pdf8.php - und der Text in den Tabellen wird aus einer TXT-Datei extrahiert, aber ich möchte diese Punkte mit meiner $ _POST-Funktion gefüllt .. THNX für die Unterstützung – NORM