Revolutionieren Sie Ihre IT
Software für uns alle

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";
  • $this->labelTeilrechnungen = "Teilrechnungen"; //ab open3A 1.4a

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";

Textausrichtung

Mit diesen Variablen bestimmen Sie die Ausrichtung des Textes in den entsprechenden Spalten. Gültige Werte sind L, R, C

  • $this->alignMenge = "R";
  • $this->alignDetailsAdresse = "R"; (ab 1.6)
  • $this->alignDetails = "R"; (ab 1.6)

Positionen, Breiten und Höhen

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 bei einem array() ist immer der Rechtswert, die zweite Angabe der Hochwert.

  • $this->widthDetails = 60;
    Die Rechnungsinformationen (Rechnungsnummer, Kundennummer, Datum usw.)
  • $this->widthDetailsLabel = 30;
  • $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, 60); (ab 1.1a, bis 1.4a (20, 50))
  • $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);
  • $this->positionPreis = "end"; //OR start
    Die Position des Artikelpreises innerhalb der Postenliste


  • $this->heightPositionenBeschreibung = 3;
    Die Höhe der einzelnen Zeilen innerhalb der Postenbeschreibung

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;
  • $this->widthArtikelnummer = null;
  • $this->widthRabatt = null; //Funktioniert nur mit dem Rabatt-Customizer
  • $this->widthRabattpreis = null; //Funktioniert nur mit dem Rabatt-Customizer

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->sumHideOn = array("L"); //(ab 1.6) mögliche Werte; G, R, L, A, B
  • $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;

Absender-Zeile

Das Zeichen, das verwendet wird, um die Adressangaben zu trennen

  • $this->absenderZeileTrennzeichen = ",";

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 105, 148 und 192 (210 ab 1.5) 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;

Wenn Sie das Brutto-Plugin installiert haben, fügen Sie diese Zeile bitte nach parent::__construct($S); ein.

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

  • $this->showNullPreise = true;

0%-Mehrwertsteuer einblenden (ab 1.4)

  • $this->show0ProzentMwSt = false;

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();
   }

}