Open3A HowTo: PDF anpassen

Aus phynx application framework

Wechseln zu: Navigation, Suche

Erstellen Sie zunächst mit dem Vorlageneditor auf der Homepage eine Vorlage und kopieren Sie sie in das specifics-Verzeichnis.
Sie benötigen möglicherweise einen Texteditor, der die Unix-Zeilenumbrüche beherrscht. Verwenden Sie zum Beispiel PSPad

Öffnen Sie die Vorlage mit dem Editor. Es sollte etwa so aussehen:

class Vorlage_20082008_173339 extends Vorlage_any implements iVorlage {
   
   function __construct($S = null){
      
      //eigene Anweisungen hier einfügen
      
      //Blendet den Firmenschriftzug oben auf der Seite aus.
      //Zum Einblenden eine Position angeben, z.B. = array(20, 12);
      //Funktioniert erst ab open3A Version 1.0
      $this->positionFirmaSchriftzug = null; //array(20, 12);
      
      parent::__construct($S);
   }
   
   function getLabel(){
      return "Testvorlage";
   }
   
   function Header(){
      $this->Image("../specifics/HS.png",165,5,23);
      parent::Header();
   }

}

An der Stelle, die mit "//eigene Anweisungen hier einfügen" markiert ist, können Sie Ihre eigenen Befehle angeben.
Es stehen folgende Variablen zur Verfügung:


Inhaltsverzeichnis

Beschriftungen

Mit diesen Variablen können Sie die Beschriftungen verändern. Um das Lieferdatum auszublenden, setzen Sie $this->labelLieferdatum = null;

  • $this->labelRechnung = "Rechnung";
  • $this->labelLieferschein = "Lieferschein";
  • $this->labelGutschrift = "Gutschrift";
  • $this->labelAngebot = "Angebot";
  • $this->labelKalkulation = "Kalkulation";
  • $this->labelMahnung = "Mahnung";


  • $this->labelTelefon = "Telefon";
  • $this->labelFax = "Fax";
  • $this->labelHandy = "Handy";
  • $this->labelEMail = "E-Mail";
  • $this->labelInternet = "Internet";


  • $this->labelDatum = "Datum";
  • $this->labelLieferdatum = "Lieferdatum";
  • $this->labelUstID = "Ust-IdNr";
  • $this->labelStNr = "Steuernummer";
  • $this->labelKundennummer = "Kundennummer";
  • $this->labelKundeUstID = "Kunden-Ust-IdNr";
  • $this->labelKundeStNr = "Kunden-Steuernummer";


  • $this->labelPosition = "Pos";
  • $this->labelMenge = "Menge";
  • $this->labelEinheit = "Einheit";
  • $this->labelBezeichnung = "Bezeichnung";
  • $this->labelEinzelpreis = "Einzelpreis";
  • $this->labelGesamt = "Gesamt";


  • $this->labelGesamtNetto = "Gesamt Netto";
  • $this->labelUmsatzsteuer = "Umsatzsteuer";
  • $this->labelRechnungsbetrag = "Rechnungsbetrag";
  • $this->labelGutschriftsbetrag = "Gutschriftsbetrag";
  • $this->labelGesamtBrutto = "Gesamt Brutto";


  • $this->labelGes = "ges.";
  • $this->labelVK = "VK";
  • $this->labelEK1 = "EK1";
  • $this->labelEK2 = "EK2";
  • $this->labelRabatt = "Rabatt";
  • $this->labelLeasingrate = "Leasingrate";


  • $this->labelAmtsgericht = "Amtsgericht";
  • $this->labelHandelsregister = "Handelsregister Nr.";
  • $this->labelSeite = "Seite";
    Setzen Sie labelSeite auf null, um die Seitenzahl auszublenden
  • $this->labelFortsetzung = "Fortsetzung auf Seite";
  • $this->labelUebertrag = "Übertrag";


  • $this->labelKopie = "Kopie";
  • $this->labelVersandkosten = "Versandkosten";


Eigene Felder auf der Rechnung (ab 1.3)

Sie können bis zu drei eigene Felder auf der Rechnung anzeigen. Setzen Sie dazu einfach in der Vorlage den Namen des Feldes.
Wenn die Vorlage als Standardvorlage in den Stammdaten eingestellt ist, können die Inhalte im Beleg bearbeitet werden.

  • $this->labelCustomField1 = "Feld 1";
  • $this->labelCustomField2 = "Feld 2";
  • $this->labelCustomField3 = "Feld 3";

Positionen und Breiten

Alle Angaben für Positionen und Breiten müssen in Millimetern sein. Bei Positionen wird vom linken oberen Eck der Seite gerechnet Setzen Sie die Position auf null, um den entsprechenden Block auszublenden. Die erste Angabe ist immer der Rechtswert, die zweite Angabe der Linkswert.

  • $this->widthDetails = 60;
    Die Rechnungsinformationen (Rechnungsnummer, Kundennummer, Datum usw.)
  • $this->widthRechnungsInfo = 60;
  • $this->widthLogo = 50;


  • $this->positionAbsenderZeile = array(20, 50);
    Die Absender-Zeile über der Empfängeradresse
  • $this->positionAbsenderZeileLinie = array(20, 54);
  • $this->positionEmpfaengerAdresse = array(20, 55);
    Die Empfängeradresse
  • $this->positionDetailsAdresse = array(140, 30);
    Die Firmenadresse rechts oben
  • $this->positionDetails = array(130, 40);
    Die Details zur Firma wie Adresse, Telefon usw
  • $this->positionRechnungsInfo = array(130, 59);
  • $this->positionRechnungsInfo2teSeite = array(130, 30);
  • $this->positionPosten2teSeite = array(20, 50); (1.1a)
  • $this->positionTextbausteinOben = array(20, 95);
  • $this->positionFirmaSchriftzug = array(20, 12);
  • $this->positionKopieLabel = array(90, 59);
  • $this->positionKopieLabel2teSeite = array(90, 30);
  • $this->positionFooter = 275;
  • $this->positionLogo = array(140, 10);

Spalten

Angaben für die Spaltenbreite in Millimetern. Setzen Sie eine Spalte gleich null, um sie auszublenden. Die Spalten EK1, E2 und VK gibt es nur in der Kalkulation. Die Gesamtseitenbreite ist 210mm - 40mm (Ränder) = 170mm.

  • $this->widthPosition = null;
  • $this->widthMenge = 19;
  • $this->widthEinheit = 28;
  • $this->widthBezeichnung = 55;
  • $this->widthEinzelpreis = 35;
  • $this->widthGesamt = 33;
  • $this->widthEK1 = 35;
  • $this->widthEK2 = 30;
  • $this->widthVK = 31;


Summe

Einstellungen für den Summenbereich der Rechnung.
Sie können grundsätzlich wählen zwischen einer horizontalen (horizontal) und einer vertikalen (vertical) Darstellung.
In der vertikalen Ansicht verändern Sie die Position und Breite nur mit sumBetragPosition und sumBetragWidth.
Die anderen Position- und Width-Variablen sind dann ungültig.

  • $this->sumAlignment = "horizontal";
  • $this->sumShowGesamtNetto = true;
  • $this->sumShowUmsatzsteuer = true;
  • $this->sumShowBetrag = true;
  • $this->sumGesamtNettoPosition = 72;
  • $this->sumUmsatzsteuerPosition = 122;
  • $this->sumBetragPosition = 157;
  • $this->sumGesamtNettoWidth = 50;
  • $this->sumUmsatzsteuerWidth = 35;
  • $this->sumBetragWidth = 33;

Schriften

Sie können die Schriftarten Arial, Helvetica und Times verwenden.
Wie Sie weitere Schriftarten erzeugen, finden Sie auf FPDF.de.
Auf dieser Seite können Sie eine TTF-Schriftart ins FPDF-Format konvertieren: http://fpdf.fruit-lab.de/

Achtung: Es darf kein Leerzeichen zwischen den Anführungszeichen an der zweiten Position stehen.
Dies muss nur hier im wiki so eingetragen werden, da der Text sonst kursiv dargestellt wird.

  • $this->fontAbsenderZeile = array('Arial', ' ', 8);
  • $this->fontDetails = array('Arial', ' ', 8);
  • $this->fontRechnungsInfo = array('Arial', ' ' , 9);
  • $this->fontKopieLabel = array('Arial', 'B', 24);
  • $this->fontPositionen = array('Arial', ' ', 9);
  • $this->fontPositionenHeader = array('Arial', 'BI', 9);
  • $this->fontPositionenBeschreibung = array('Arial', ' ', 7);
  • $this->fontPositionenArtikelname = array('Arial', 'B', 9); //Ab open3A 1.4
  • $this->fontFooter = array('Arial', ' ', 8);
  • $this->fontEmpfaengerAdresse = array('Arial', ' ', 11);
  • $this->fontFirmaSchriftzug = array('Arial', 'B', 28);
  • $this->fontTextbausteine = array('Arial',' ',10);
  • $this->fontSumHeaders = array('Arial', 'B', 9); //Ab open3A 1.4
  • $this->fontSumNetto = array('Arial', ' ', 9); //Ab open3A 1.4
  • $this->fontSumUmsatzsteuer = array('Arial', ' ', 9); //Ab open3A 1.4
  • $this->fontSumBetrag = array('Arial', 'B', 9); //Ab open3A 1.4

Eine neue Schriftart einfügen (ab 1.4)

Bitte erstellen Sie zunächst die Schriftartdateien mit http://fpdf.fruit-lab.de/ aus einer TTF-Schriftart.
Kopieren Sie anschließend die Dateien mit der Endung .php und .z nach libraries/fpdf/font und benennen Sie sie nicht um.

Fügen Sie in Ihrer Vorlage die folgenden Zeilen vor parent::__construct($S); ein:

#Für normalen Schrittyp:
$this->AddFont('Syntax',' ','lte50617.php');

#Für fetten Schrifttyp:
$this->AddFont('Syntax','B','lte50619B.php');

#Für kursiven Schrifttyp:
$this->AddFont('Syntax','I','lte50619I.php');

#Für fetten und kursiven Schrifttyp:
$this->AddFont('Syntax','BI','lte50619BI.php');

Sie können jetzt die Schriftart Syntax verwenden:

$this->fontPositionen = array('Syntax', ' ', 10);

Footer

Formatiert den unteren Bereich des Briefes.
Die Angaben sind in Millimeter

  • $this->footerShowLine = true;
  • $this->footerAmtsgerichtPosition = 110;
  • $this->footerDetailsPosition = 20;
  • $this->footerSeitePosition = 175;

Sonstiges

Sprache

Folgende Einstellung regelt die Formatierung der Beträge.
Sicher implementiert sind nur de_DE, en_GB und en_US.
Wenn eine Sprache nicht vorhanden ist, wird auf de_DE ausgewichen.

  • $this->language = "de_DE";

Falzmarken

Sollen die Falzmarken bei 110, 148 und 192 Millimetern angezeigt werden?

  • $this->showFalzmarken = true;

Anrede

Auf true setzen, um in der Empfängeradresse eine Anrede mit anzuzeigen (Herr, Frau, Familie)

  • $this->showAnredeInEmpfaenger = false;

Seitenränder

Ab open3A 1.3

In der Vorlage können folgende Werte gesetzt werden:

  • $this->marginLeft = 20;
  • $this->marginTop = 20;
  • $this->marginRight = 20;
  • $this->marginBottom = 40;

Bis open3A 1.2

Fügen Sie diesen Befehl NACH parent::__construct($S); ein, um die Seitenränder (links, rechts, oben) anzugeben:

  • $this->setMargins(20, 20);

Verschlüsselung

Fügen Sie diesen Befehl NACH parent::__construct($S); ein, um die PDF-Verschlüsselung zu de-/aktivieren:

  • $this->encrypted = false;

Bruttopreise

Sollen in der Postenliste nur Brutto und keine Nettopreise erscheinen, geben Sie true an.

  • $this->showBruttoPreise = false;

0,00€-Beträge ausblenden (ab 1.1a)

  • $this->showNullPreise = true;

Zweite Bankverbindung

Erweitern Sie Ihre Vorlage um folgende Funktion und ersetzen Sie Bank, BLZ, Kontonummer mit Ihren Bankdaten.

Mit $this->SetXY(42, 290); setzen Sie die Position von der linken oberen Ecke.

function Footer(){
    parent::Footer();   
    $this->SetXY(42, 290);
    $this->SetFont($this->fontFooter[0], $this->fontFooter[1], $this->fontFooter[2]);
    $this->MultiCell(180, 4, "Bank, BLZ, Kontonummer"); 
}

Seitenumbruch (ab 1.2)

Fügen Sie diesen Befehl NACH parent::__construct($S); ein, um den Seitenumbruch anzugeben:

$this->SetAutoPageBreak(true, 20);

In diesem Fall würde 20 Millimeter vor dem Ende der Seite umgebrochen.
20 Millimeter entspricht der Standardeinstellung.

Keine Summenberechnung im Angebot

Bitte fügen Sie folgende Zeilen UNTERHALB der function __construct($S = null){} ein

function printGesamt($type){
	if($type == "A") return;
	parent::printGesamt($type);
}

Anzahl der Nachkommastellen im Posten (ab 1.3)

Stellen Sie folgenden Wert auf 2 oder 3, um die Anzahl der Nachkommastellen im Posten zu verändern

  • $this->showDezimalstellen = null;

Beispiel

Es folgt eine Vorlage, in der die Positionenspalte eingeblendet und die Einheit-Spalte ausgeblendet wird.
Außerdem wurden die Bezeichnungen der Belege ins englische übersetzt.

class Vorlage_20082008_170621 extends Vorlage_any implements iVorlage {
   
   function __construct($S = null){
      
      //eigene Anweisungen hier einfügen
      $this->widthPosition = 19;
      $this->widthEinheit = null;
      
      $this->labelRechnung = "Invoice";
      $this->labelGutschrift = "Credit memo";
      $this->labelAngebot = "Quotation";
      $this->labelLieferschein = "Shipping invoice";
      $this->labelKalkulation = "Calculation";
      
      parent::__construct($S);
   }
   
   function getLabel(){
      return "Testvorlage";
   }
   
   function Header(){
      $this->Image("../specifics/FHSL.jpg",165,5,23);
      parent::Header();
   }

}
Persönliche Werkzeuge