frustrate Posted June 8, 2022 Share Posted June 8, 2022 This seems to be an old bug. Tried almost everything and cannot get logo to show up on invoices. Found the header.tpl and manually adding some text does work but no luck with logo img. Anybody have any idea where the URL or URI is generated for $logo_path in header.tpl. I think it is an issue with directories but not sure. This issue also shows up on delivery notes. Link to comment Share on other sites More sharing options...
Ress Posted June 8, 2022 Share Posted June 8, 2022 You'll find logo path in: your_prestashop/classes/pdf/HTMLTemplate.php, assignCommonHeaderData() function. Link to comment Share on other sites More sharing options...
frustrate Posted June 8, 2022 Author Share Posted June 8, 2022 Found that but if you look at the code above that getLogo() you will notice code for $logo. If my understanding is correct if $invoiceLog or $logo is empty it will return nothing. Considering that my logo is showing, assuming $logo is the variable used for that then there is an issue in the code for $ invoiceLogo protected function getLogo() { $id_shop = (int) $this->shop->id; $invoiceLogo = Configuration::get('PS_LOGO_INVOICE', null, null, $id_shop); if ($invoiceLogo && file_exists(_PS_IMG_DIR_ . $invoiceLogo)) { return $invoiceLogo; } $logo = Configuration::get('PS_LOGO', null, null, $id_shop); if ($logo && file_exists(_PS_IMG_DIR_ . $logo)) { return $logo; } return null; } So I would thing the issue might be in PS_LOGO_INVOICE and again where is this defined? Link to comment Share on other sites More sharing options...
frustrate Posted June 8, 2022 Author Share Posted June 8, 2022 Just tried something and replaced PS_LOGO_INVOICE with PS_LOGO and that did not work, so one can assume there is no problem there. Back to assignCommonHeaderData() again. A bit stuck not sure how to progress, any ideas Link to comment Share on other sites More sharing options...
Tom Girou Posted June 8, 2022 Share Posted June 8, 2022 In your /img folder, do you have a logo_invoice.jpg ? Did you upload a logo for the invoices ? Theme & Logo > Invoice Logo Link to comment Share on other sites More sharing options...
frustrate Posted June 8, 2022 Author Share Posted June 8, 2022 yes I do, i specifically did that first. In the interim I have discovered that $logo_path is not empty. I just printed the variable in the pdf and the url was printed. So it looks like there is a problem with the way the pdf is generated. I have tried adding alt in html code to see if it will print the url if the image is not there and that does not work either. Link to comment Share on other sites More sharing options...
Tom Girou Posted June 8, 2022 Share Posted June 8, 2022 It should look like this : {if $logo_path} <img src="{$logo_path}" style="width:{$width_logo}px; height:{$height_logo}px;" /> {/if} And $logo_path value should look like this : https://mywebsite.com/optional_folder/img/my_uploaded_invoice_logo.jpg Is your logo_path value similar ? Same for the template ? Link to comment Share on other sites More sharing options...
frustrate Posted June 8, 2022 Author Share Posted June 8, 2022 yes it does Link to comment Share on other sites More sharing options...
Tom Girou Posted June 8, 2022 Share Posted June 8, 2022 If you enter the logo_path URL in your browser, do you see your logo ? Link to comment Share on other sites More sharing options...
Tom Girou Posted June 8, 2022 Share Posted June 8, 2022 Just now, frustrate said: your link does not work, but my code looks the same Of course, it's just for the example. Link to comment Share on other sites More sharing options...
frustrate Posted June 8, 2022 Author Share Posted June 8, 2022 2 minutes ago, Tom Girou said: If you enter the logo_path URL in your browser, do you see your logo ? yip Link to comment Share on other sites More sharing options...
frustrate Posted June 8, 2022 Author Share Posted June 8, 2022 5 minutes ago, Tom Girou said: Of course, it's just for the example. The only thing that remains is that there is an issue with the styling, not sure but I already tried without any height and width styling and it makes not difference Link to comment Share on other sites More sharing options...
Ress Posted June 8, 2022 Share Posted June 8, 2022 Have you tried to make any other changes through the template? Are the changes made? Link to comment Share on other sites More sharing options...
frustrate Posted June 9, 2022 Author Share Posted June 9, 2022 13 hours ago, Ress said: Have you tried to make any other changes through the template? Are the changes made? hi Ress in order to try and find where the problem is I added code to see if it makes any difference, which it does obviously, then delete the added code to return it to default again. So what I have discovered is that the variable $logo_path is not empty and changing the src tag to just a td tag and printing the content of $logo_path in the pdf actually does work. So I know the image was fetched but for some reason it does not display on the pdf. So in header.tpl I did this <table style="width: 100%"> <tr> <td style="width: 50%"> {if $logo_path} <img src="$logo_path" alt="$logo_path" style="width:{$width_logo}px; height:{$height_logo}px;" /> <td style="font-size: 14pt; color: #9E9F9E">{$logo_path|escape:'html':'UTF-8'}</td> {/if} </td> <td style="width: 50%; text-align: right;"> <table style="width: 100%"> <tr> <td style="font-weight: bold; font-size: 14pt; color: #444; width: 100%;">{if isset($header)}{$header|escape:'html':'UTF-8'|upper}{/if}</td> </tr> <tr> <td style="font-size: 14pt; color: #9E9F9E">{$date|escape:'html':'UTF-8'}</td> </tr> <tr> <td style="font-size: 14pt; color: #9E9F9E">{$title|escape:'html':'UTF-8'}</td> Obviously I deleted the line afterwards. I tried the same with $width_logo and $height_logo and that did not work so I do not know if the styling is an issue. I looked at the delivery note pdf and the logo is missing on that too. Strange that I have lodged a similar issue but with $order_link in the payment module where the variable is empty in the email sent and that was definitely confirmed as a bug with no solution thus far which means I cannot send my customers a payment link which makes the entire platform pretty useless; that is if you cannot get your customers to pay you. This issue of no logo however makes the issued invoice illegal according to Australian law and thus again makes the platform useless. If I cannot find a solution soon I will have to migrate to a working platform. Link to comment Share on other sites More sharing options...
Turritops Posted April 17, 2023 Share Posted April 17, 2023 Old thread but I just found my solution to this problem and since it's not mentioned before I thought I should add it. During the generation of the PDF the server try to fetch the image from it's own address, like www.shop.com. If the server is behind a firewall that firewall needs to support that the server on the inside makes a call to the address on the outside. It's sometime called hairpinning, some time NAT reflection and surely a bunch of more names. This isn't working in all setups. To solve the problem I entered <ip of localhost> www.shop.com (you need of course to switch www.shop.com to your address) in the hosts file. Now the server ask its local host-adress for the file and that works. 1 Link to comment Share on other sites More sharing options...
disarci Posted April 20, 2023 Share Posted April 20, 2023 Thank you for your contribution, I also found that sometimes smarty couldn't fetch the https path for the logo I replace the line with: <img src="{$logo_path|replace:"https":"http"}" style="width:{$width_logo}px; height:{$height_logo}px;" /> 2 Link to comment Share on other sites More sharing options...
aliasali Posted November 4, 2023 Share Posted November 4, 2023 On 4/20/2023 at 11:51 AM, disarci said: Thank you for your contribution, I also found that sometimes smarty couldn't fetch the https path for the logo I replace the line with: <img src="{$logo_path|replace:"https":"http"}" style="width:{$width_logo}px; height:{$height_logo}px;" /> Great this is working.... <img src="{$logo_path|replace:"https":"http"}" style="width:{$width_logo}px; height:{$height_logo}px;" /> Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now