Portal > Foren > Ankündigungen, News und Feedback > Tutorials > [PHP] PDF erstellen - ganz einfaches, schlichtes Beispiel
Antwort
 
Themen-Optionen
Alt 20.03.2005, 11:38 Nach oben    #1
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.212
Standard [PHP] PDF erstellen - ganz einfaches, schlichtes Beispiel

PDF erstellen - ganz einfaches, schlichtes Beispiel

Hier möchte ich ein kurzes Beispiel geben, wie man 'einfach' mit PHP pdf-Dateien generieren kann

Dazu habe ich mir gedacht, dass es Sinn macht eine Kombination in diesem Tutorial zu wählen aus:
- Datenbank-Inhalten
- und per Formular übergeben Daten

Um die ganze Sache zu vereinfachen bedienen wir uns einer fertigen Klasse. Einige gibt es im Angebot, persönlich habe ich Kontakt gehabt mit der, die gratis unter www.fpdf.de zur Verfügung gestellt wird.

Dazu muss man natürlich die notwendigen Daten (von dort) zur Verfügung haben, was ich aber hier einmal voraussetze.

das könnte nun wie folgt aussehen:
PHP-Code:
<?php
  
function connect_to_database($db_host$db_login$db_passwd$db_name)
  {
    
$return TRUE;
    if(!@
mysql_connect($db_host$db_login$db_passwd))
      
$return FALSE;
    if(!@
mysql_select_db($db_name))
      
$return FALSE;
    return 
$return;
  }

  
define('FPDF_FONTPATH','fpdf_font/');
  require(
'fpdf.php');


  
$db_host      'localhost';
  
$db_login     'user_123';
  
$db_passwd    'passwort';
  
$db_name      'web_234_table_1';

  
$pdf_autor    'Jann Hendrik';
  
$pdf_titel    'meine erste pdf-Datei';
  
$pdf_creator  'du selbst';
  
$pdf_subject  'subjekt';
  
$pdf_keywords 'keyword, schluesselwort, und so weiter, ...';

  if(!
connect_to_database($db_host$db_login$db_passwd$db_name))
    die(
'<h2>Fehler</h2>es konnte keine Verbindung zur Datenbank aufgebaut werden.');

    class 
PDF extends FPDF
    
{
      
//Current column
      
var $col=0;
      
//Ordinate of column start
      
var $y0;

      
//Page header
      
function Header()
      {
        
$this->SetFont('Arial','B',10);
        
$this->Ln(5);
        
$this->y0=$this->GetY();
      }

      function 
leftorright($col)
      {
        if(
$col%== 0)
        {
          
$setx 22;
          
$this->AddPage();
          
$this->SetLeftMargin($setx);
          
$this->SetXY($setx10);
        }
        else
        {
          
$setx 120;
          
$this->SetLeftMargin($setx);
          
$this->SetXY($setx10);
        }
      }


      
//Page footer
      
function Footer()
      {
        
$this->SetXY(20, -15);
        
$this->SetFont('Times','',8);
        
$this->Cell(0,10,"Seite ".$this->PageNo()." - Stand: ".date("d.m.Y"),0,0,'C');
      }
    }


    
//Instanciation of inherited class
    
$pdf=new PDF('L','mm','A5');
    
$pdf->SetLeftMargin(22);
    
$pdf->SetTopMargin(6);
    
$pdf->SetAuthor($pdf_autor);
    
$pdf->SetTitle($pdf_titel);
    
$pdf->SetCreator($pdf_creator);
    
$pdf->SetSubject($pdf_subject);
    
$pdf->SetKeywords($pdf_keywords);

    
$pdf->AliasNbPages();

    
$pdf->AddPage();
    
$pdf->Cell(40,10,'Hello World !',1);

    
$sql "SELECT spalte1, spalte2 FROM 'tabelle'";
    
$result mysql_query($sql) or die ("Fehler: <br />" mysql_error());

    
$pdf->SetFont('''''10');
    while(
$zeile=mysql_fetch_assoc($result))
    {
      
$pdf->Cell(43,10,$zeile['spalte1'],0,0);
      
$pdf->Cell(43,10,$zeile['spalte2'],0,1);
    }
    
$pdf->Output("pdf_".date('Y_m_d').".pdf",'D');
?>
Nähere Infos zu der Funktion Cell() die in der Klasse definiert wurde bekommt man direkt unter www.fpdf.de
Dort werden auch die Oarameter erkärt.


Solltet Ihr Fragen zu dem Tutorial haben, so schreibt bitte einen Beitrag im PHP-Forum mit einem Verweis auf dieses Tutorial. Und erkundigt euch unter www.fpdf.de - dies hier sollte nur Appetit auf mehr machen!
Danke.

Ich hoffe, dass ich Euch hier etwas weiterhelfen konnte.


Grüße Jann Hendrik


// edit Kritikpunkte geändert.

Geändert von Jann Hendrik (25.05.2007 um 10:24 Uhr).
Jann Hendrik ist gerade online  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 25.08.2005, 09:16 Nach oben    #2
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 591
Standard [PHP] PDF erstellen - ganz einfaches, schlichtes Beispiel

Zitat:
$pdf->Cell(43,10,$zeile['spalte1'],0,1);
$pdf->Cell(43,10,$zeile['spalte2'],0,0);
Ist hier ein Zahlendreher drin oder ist das wirklich so ?
Bezüglich ..0,1) und ..0,0)
Gut, kann mich jetzt auch irren, habe es nicht getestet.
CIX88 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 24.11.2005, 11:35 Nach oben    #3
Neuer Benutzer
 
Registriert seit: 01.11.2005
Beiträge: 29
Standard

Hi,

Habe folgendes Problem:
Will aus einem Browserfenster, bei dem schon mehrere andere Ausgaben an des Fenster erfolgten ein PDF erstellen, stoße dabei auf dieses Probelem:

aus FPDF.de
Vorsicht: wenn das PDF zum Browser geschickt wird muss nichts anderes ausgegeben werden, weder davor noch danach (am wenigsten Leerzeichen oder Wagenrückläufe). Wenn man davor Daten verschickt erhält man eine Fehlermeldung: "Some data has already been output to browser, can't send PDF file". Wenn man Daten danach verschickt wird der Browser eine leere Seite wiedergeben.

Wer hat eine Idee wie ich das umgehen kann? Könnte ich irgendwie eine Umleitung in eine neues Fenster hinkriegen?

Grüsse
Doria
doria ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 24.11.2005, 11:41 Nach oben    #4
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.180
Standard

das php erstellen kommt einfach in ein gesondertes script, was NUR die pdf ausgibt und entweder man erzeugt nen link dorthin oder man leitet dorthin weiter
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 24.11.2005, 12:44 Nach oben    #5
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 591
Standard

Vorschlag

Zitat:
$pdf->SetFont('', '', '10');
SetFont() braucht man nur einmal machen, also vor die while-Schleife setzen.
Die gesetzten Parameter bleiben solange aktiv, bis sie wieder geändert werden.
Demnach ist es nicht nötig innerhalb von while SetFont() neu anzulegen.

Zitat:
$pdf->Cell(43,10,$zeile['spalte1'],0,1);
$pdf->Cell(43,10,$zeile['spalte2'],0,0);
Nach Spalte1 wird die Position am Anfang der nächsten Zeile gesetzt.
Besser wäre ( auch optisch

$pdf->Cell( 43, 10, $zeile['spalte1'], 0, 0);
$pdf->Cell( 43, 10, $zeile['spalte2'], 0, 1);

Dann erfolgt ein Zeilenumbruch erst nach der Spalte2, und Spalte1/2 befinden sich sauber in einer Zeile.

// edit by Jann Hendrik: im Tutorial geändert

Geändert von Jann Hendrik (24.11.2005 um 13:09 Uhr).
CIX88 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[PHP] thumbnails erstellen - kleine Funktion Jann Hendrik Tutorials 2 16.01.2008 10:38
[PHP] Rekursives Erstellen von Verzeichnissen Jojo Tutorials 4 12.03.2006 18:26
[PHP] Ein einfaches Template-System MrNiceGuy Tutorials 0 09.10.2005 18:30
[PHP] Wie kann ich eine Textdatei erstellen und mit Inhalt füllen? Ben Tutorials 2 06.09.2005 11:17


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:43 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

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