Anleitung HowTo: Rechnung - Logo oben mittig (Selfhosting)

Thema wurde von DKG - Die Kleine Geschenkidee (Peter), 10. August 2023 erstellt.

  1. DKG - Die Kleine Geschenkidee (Peter)

    Registriert seit:
    2. Oktober 2017
    Beiträge:
    313
    Danke erhalten:
    160
    Danke vergeben:
    106
    Hi,

    wer in seinen Rechnungen das Logo oben mittig haben möchte,
    kann die nachfolgende Anpassung verwenden.

    So sieht das Ergebnis aus:
    [​IMG]

    Datei die angepasst werden muss:
    admin/includes/gm/classes/gmOrderPDF.php

    Updatesicher:
    nein, muss nach Update wieder manuell angepasst werden

    Gambio Version:
    v4.8.0.2

    Hinweis:
    In früheren gambio Versionen lag die Datei in einem anderen Ordner

    Suche in der Datei:
    PHP:
        /*
         *     -> get Logo
         */
        
    function getLogo()
        {
            
    $logo_size getimagesize($this->pdf_logo_path);

            
    $mm_x $logo_size[0] / $this->k;
            
    $mm_y $logo_size[1] / $this->k;

            if(
    $mm_x parent::getInnerWidth() / 2)
            {
                
    $size_factor = (parent::getInnerWidth() / 1) / $mm_x;
                
    $mm_x parent::getInnerWidth() / 1;
                
    $mm_y *= $size_factor;
            }

            
    $pos_x parent::getLeftMargin() + parent::getInnerWidth() - $mm_x;

            
    parent::Image($this->pdf_logo_path$pos_xparent::getTopMargin(), $mm_x$mm_ysubstr(strrchr($logo_size['mime'], '/'), 1), $this->pdf_link);

            
    parent::SetY(parent::getTopMargin() + $mm_y);
        }
    ...und ersetze es hiermit:
    PHP:
    /*
         *     -> get Logo
         */
        
    function getLogo()
        {
            
    $logo_size getimagesize($this->pdf_logo_path);

            
    $mm_x $logo_size[0] / $this->k;
            
    $mm_y $logo_size[1] / $this->k;

            
    $max_width parent::getInnerWidth() / 1;
            if (
    $mm_x $max_width) {
                
    $size_factor $max_width $mm_x;
                
    $mm_x $max_width;
                
    $mm_y *= $size_factor;
            }

            
    $pos_x parent::getLeftMargin() + (parent::getInnerWidth() - $mm_x) / 2// Logo mittig ausrichten

            
    parent::Image($this->pdf_logo_path$pos_xparent::getTopMargin(), $mm_x$mm_ysubstr(strrchr($logo_size['mime'], '/'), 1), $this->pdf_link);

            
    parent::SetY(parent::getTopMargin() + $mm_y);
        }

    Viel Spaß damit.
    Und wie immer: Verwendung auf eigene Gefahr, ich übernehme keine Haftung.

    Gruß
    Peter
     
  2. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    7. März 2021
    Beiträge:
    29
    Danke erhalten:
    2
    Danke vergeben:
    47
    Kann man das auch über die gesamte Blattbreite strecken?
     
  3. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    13. Juni 2018
    Beiträge:
    206
    Danke erhalten:
    100
    Danke vergeben:
    143
    ja, musst nur das Logo in der entsprechenden Größe einfügen, ich hab 1022 x 188
     

    Anhänge:

  4. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    7. März 2021
    Beiträge:
    29
    Danke erhalten:
    2
    Danke vergeben:
    47
    Danke, aber bei mir sieht das immer so aus (egal welche Größe ich nehme):

    GambioRechnung.png
     
  5. DKG - Die Kleine Geschenkidee (Peter)

    Registriert seit:
    2. Oktober 2017
    Beiträge:
    313
    Danke erhalten:
    160
    Danke vergeben:
    106
    Ja,
    hier der Code dafür
    PHP:
    function getLogo()
    {
        
    $logo_size getimagesize($this->pdf_logo_path);

        
    $mm_x $logo_size[0] / $this->k;
        
    $mm_y $logo_size[1] / $this->k;

        
    $max_width parent::getInnerWidth() - 2// Ändere die maximale Breite auf das volle Innere der PDF
        
    $size_factor $max_width $mm_x;

        
    $mm_x $max_width;
        
    $mm_y *= $size_factor;

        
    $pos_x parent::getLeftMargin(); // Keine Verschiebung nach links nötig, da das Logo nun die volle Breite einnimmt

        
    parent::Image($this->pdf_logo_path$pos_xparent::getTopMargin(), $mm_x$mm_ysubstr(strrchr($logo_size['mime'], '/'), 1), $this->pdf_link);

        
    parent::SetY(parent::getTopMargin() + $mm_y);
    }
    Bitte sag bescheid ob es geklappt hat. ich hatte es bei mir getestet - da hat es funktioniert.

    da hast Du leider unrecht.
    Die Größe wird programmatisch festgelegt, wieviel Platz es im PDF Dokument einnehmen soll.

    LG
    Peter
     
  6. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    7. März 2021
    Beiträge:
    29
    Danke erhalten:
    2
    Danke vergeben:
    47
    Hallo Peter,

    erstmal herzlichen Dank für Deine Nachricht. Da ich (leider) absolut NULL-Plan von HTML, PHP & Co. habe - muss ich leider nachfragen: da wo Du "Ändere die maximale Breite auf das volle Innere der PDF" - muss ich da irgendwo noch was eintragen? Also den Code genauso übernehmen funktioniert nicht, kommt ein Fehler im Bezug auf "parent".
    Sorry wenn ich blöd frage, kenne mich leider wirklich nicht aus, versuche aber gerade hier viel zu lesen und suche nach einer Möglichkeit, mir etwas Wissen um HTML und PHP anzueignen.
     
  7. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    7. März 2021
    Beiträge:
    29
    Danke erhalten:
    2
    Danke vergeben:
    47
    Zusatzfrage: Ist es möglich, statt der vorgegebenen 4 Spalten im Fußteil der Rechnung ebenfalls ein Bild zu verwenden?
    Also ich habe da eine png Datei in der meine Adresse, Steuernummer, Bankverbindung, Kontaktdaten, etc. (also alles was drin sein sollte) mit einigen Logos zusammen. Wäre das möglich?
     
  8. DKG - Die Kleine Geschenkidee (Peter)

    Registriert seit:
    2. Oktober 2017
    Beiträge:
    313
    Danke erhalten:
    160
    Danke vergeben:
    106
    Hi Martin,

    eintragen musst Du nichts mehr, der Code ist fertig so.
    2 Fragen meinerseits:
    a) welche Shopversion verwendest Du?
    b) wie genau lautet die Fehlermeldung? wenn man das ergründen und beheben will, braucht man genaue Angaben.

    Grundsätzlich ja, allerdings hab ich mich damit bisher nicht auseinandergesetzt und scheue auch den Aufwand, da es im Gegensatz zum Logo viel zeitaufwendiger ist. daher sry wenn ich Dir da nun keine Lösung anbieten will und kann.

    LG
    Peter
     
  9. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    7. März 2021
    Beiträge:
    29
    Danke erhalten:
    2
    Danke vergeben:
    47
    Da ich das hier schon öfter gelesen habe, hatte ich das in die Signatur (ich hoffe man sieht das?!) mit aufgenommen: v4.8.0.2 mit Honeygrid Theme. Bin ja ganz "frisch".

    Werde ich später wenn ich auf Arbeit bin, noch einmal reproduzieren und senden.

    Das geht für mich völlig in Ordnung, die Frage war ja auch erst einmal, ob das grundsätzlich geht, hab noch andere Baustellen vorab und das Logo oben ist erst einmal wichtiger. :)

    Melde mich später - und vielen Dank.
     
  10. DKG - Die Kleine Geschenkidee (Peter)

    Registriert seit:
    2. Oktober 2017
    Beiträge:
    313
    Danke erhalten:
    160
    Danke vergeben:
    106

    Anhänge:

  11. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    7. März 2021
    Beiträge:
    29
    Danke erhalten:
    2
    Danke vergeben:
    47
    Wow....!

    funktioniert. :) Vielen vielen vielen Dank!!!
    Weiß grad gar nicht was ich sagen soll ... :)
     
  12. DKG - Die Kleine Geschenkidee (Peter)

    Registriert seit:
    2. Oktober 2017
    Beiträge:
    313
    Danke erhalten:
    160
    Danke vergeben:
    106
    Nix zu danken, muss auch fairerweise dazusagen das ich mir so Scripte gerne mal von ChatGPT anpassen lasse, weil ich schreibfaul bin :) - so auch in deinem Fall.
    Unterm Strich zählt ja das Ergebnis - schön das es funzt ^^