Jump to content

Πρόβλημα με την εκτύπωση τιμολογίων σε PDF


cirrus3d

Recommended Posts

Καλημέρα,

Αντιμετωπίζω ένα πρόβλημα στην εκτύπωση τιμολογιών.

Στο Orders > Ivoices αν πάω να εκτυπώσω πχ τα τιμολόγια του τελευταίου μήνα παίρνω το error:

"FPDF error: Undefined font: arial_g B"

Για κάποιο λόγο δεν αναγνωρίζεται η bold γραμματοσειρά???

 

Ξέρει κανείς τι παίζει με αυτό το error;

 

Ευχαριστώ

Link to comment
Share on other sites

Οκ, solved. Γενικά το fpdf είναι λίγο για τα μπάζα.

 

Για όσους αντιμετωπίζουν το ίδιο πρόβλημα, οι οδηγίες που βρήκα για να το λύσω είναι εδώ:

 

http://www.prestasho...pdf-vers-tcpdf/

 

και ουσιαστικά είναι migration από την fpdf engine στην tcpdf που θα υποστηρίζεται και από την έκδοση 1.5 του prestashop.

 

0) Κατεβάζουμε το tcpdf και το βάζουμε μέσα στο φάκελο tools (tools/tcpdf)

 

 

1) Στο config/config.inc.php βάζουμε στο τέλος τη γραμμή

/* TCPDF Installation */
define('_PS_TCPDF_PATH_',			_PS_TOOL_DIR_.'tcpdf/');

2) Κατεβάζουμε το PDF.php που βρίσκεται στο link με τις γαλλικές οδηγίες που είναι παραπάνω και το βάζουμε στο /classes

 

3) Αντικαθιστούμε το /(admin_folder)/tabs/AdminPDF.php με τον ακόλουθο κώδικα (έκδοση prestashop 1.4.6.2)

<?php
/*
* 2007-2011 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <[email protected]>
*  @copyright  2007-2011 PrestaShop SA
*  @version  Release: $Revision: 6594 $
*  @license	http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*/
define('_PS_TCPDF_PATH_',				   _PS_TOOL_DIR_.'tcpdf/');
include_once(PS_ADMIN_DIR.'/tabs/AdminPreferences.php');
include_once(_PS_TCPDF_PATH_.'encodings_maps.php');
class AdminPDF extends AdminPreferences
{
public function __construct()
{
 global $cookie;
 $lang = strtoupper(Language::getIsoById($cookie->id_lang));
 $this->className = 'Configuration';
 $this->table = 'configuration';
 /* Collect all font files and build array for combo box */
 $fontFiles = scandir(_PS_TCPDF_PATH_.'fonts');
 $fontList = array();
 $arr = array();

 foreach ($fontFiles AS $file)
  if (substr($file, -4) == '.php' AND $file != 'index.php' AND substr($file, -6) != 'bi.php' AND substr($file, -5) != 'b.php' AND substr($file, -5) != 'i.php')
  {
$arr['mode'] = substr($file, 0, -4);
$arr['name'] = substr($file, 0, -4);
array_push($fontList, $arr);
  }
 /* Collect all encoding map files and build array for combo box */
 $encodingFiles = new TCPDF_ENCODING_MAPS();//scandir(_PS_TCPDF_PATH_.'font/makefont');
 $encodingList = array();
 $arr = array();
 foreach ($encodingFiles->encmap AS $key => $file)
 {
  $arr['mode'] = $key;
  $arr['name'] = $key;
  array_push($encodingList, $arr);
 }
  $this->_fieldsPDF = array(
  'PS_PDF_ENCODING' => array(
'title' => $this->l('Encoding:'),
'desc' => $this->l('Encoding for PDF invoice'),
'type' => 'selectLang',
'cast' => 'strval',
'identifier' => 'mode',
'list' => $encodingList),
  'PS_PDF_FONT' => array(
'title' => $this->l('Font:'),
'desc' => $this->l('Font for PDF invoice'),
'type' => 'selectLang',
'cast' => 'strval',
'identifier' => 'mode',
'list' => $fontList)
 );
 parent::__construct();
}
public function postProcess()
{
 if (isset($_POST['submitPDF'.$this->table]))
 {
  $fieldLangPDF = array();
  $languages = Language::getLanguages(false);
  foreach ($this->_fieldsPDF as $field => $fieldvalue)
foreach ($languages as $lang)
 if (Tools::getValue($field.'_'.strtoupper($lang['iso_code'])))
  $fieldLangPDF[$field.'_'.strtoupper($lang['iso_code'])] = array('type' => 'select', 'cast' => 'strval', 'identifier' => 'mode', 'list' => $fieldvalue['list']);
if ($this->tabAccess['edit'] === '1')
$this->_postConfig($fieldLangPDF);
  else
$this->_errors[] = Tools::displayError('You do not have permission to edit here.');
 }
}
public function display()
{
 global $cookie;
 $language = new Language((int)($cookie->id_lang));
 if (!Validate::isLoadedObject($language))
  die(Tools::displayError());
 $this->_displayForm('PDF', $this->_fieldsPDF, $this->l('PDF settings for the current language:').' '.$language->name, 'width2', 'pdf');
}
}

4) Στο back office του prestashop πηγαίνουμε στο Orders > PDF και επιλέγουμε τη γραμματοσειρά dejavusans και encoding 8859-7

 

Από εδώ και εμπρός το encoding παίζει κανονικά.

Link to comment
Share on other sites

  • 7 months later...
  • 3 weeks later...

Πήγαινε classes/pdf/pdfgenerator.php

 

Στον κώδικα, βρες το παρακάτω (είναι στην αρχή)

 

class PDFGeneratorCore extends TCPDF

{

const DEFAULT_FONT = 'freeserif';

 

και στη γραμμή 37 άλλαξε το helvetica σε freeserif και όλα θα εμφανίζονται μια χαρά.

Edited by spott3rgr (see edit history)
  • Like 1
Link to comment
Share on other sites

  • 1 month later...
  • 3 weeks later...

και εμένα πλέον το πρόβλημά μου είναι τα ελληνικά

το έχει λύσει κάποιος το πρόβλημα με τα e-mail?

χρησιμοποιώ το 1.5.2

Όταν λες πρόβλημα τι ακριβώς; Δε στέλνει mail όταν έχεις ελληνικά; Στέλνει αλαμπουρνέζικα; Τι ακριβώς φίλε μου; Γίνε πιο συγκεκριμένος!

Link to comment
Share on other sites

καλημέρα φίλε μου

το πρόβλημα είναι ότι όταν η σελ΄δια στέλνει e-mail στον πελάτη, ότι είναι στα ελληνικά βγαίνει με ?????

είχα το ίδιο πρόβλημα και με τα pdf και φτιάχτηκε αλλάζοντας το font όπως λέει ο cirrus παραπάνω.

 

η έκδοση που χρησιμοποιώ είναι η 1.5.2

Link to comment
Share on other sites

  • 2 months later...

Καλησπέρα, για κάποιο περίεργο λόγο και ενω δνε άλλαξα τπτ στο eshop γενικότερα ουτε έκανα κάποια αναβάθμιση (εχω ακόμα την 1.5.2) εξαφανίστηκαν οι ελληνικοί χαρακτήρες απο τα invoices.

Αν γυρισω το

const DEFAULT_FONT = 'freeserif';

σε helvetica μου εμφανίζει τα γνωστά "????????? ?????"

Με το freeserif οπου έχει ελληνικούς χαρακτήρες βγαζει κενό.

Καμια ιδέα κανείς?

 

Τελικά ανακάλυψα οτι δεν βγάζει κενό αλλα βγαζει τους χαρακτήρες με το ίδιο χρώμα που έχει το background με συνέπεια να μην φαίνονται. Με copy paste απο το Pdf σε txt βλέπω το κείμενο κανονικα.

 

new edit guys:

Οταν ανοιγω το Pdf μέσα στο browser εχω αυτό το πρόβλημα. Οταν το ανοιγω σαν αρχείο ολα καλα.. Οποτε καταλήγω οτι εχει να κάνει ίσως με το plugin pdf reader που αφορά το browser.. Αυτα.

Edited by tanasi (see edit history)
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...