Forum CiviCRM Polska

Kodowanie znaków w generowanym PDFie

Autor Wątek: Kodowanie znaków w generowanym PDFie  (Przeczytany 6595 razy)

oczy

  • Nowicjusz/ka
  • *
  • Wiadomości: 19
  • Karma: +0/-0
  • Imię: Marcin
  • Nazwisko: Oczkowski
Kodowanie znaków w generowanym PDFie
« dnia: 05.02.2015, 21:36 »
Dzień dobry,

przy generowaniu PDFa z CiviCRM (4.5.4. ale we wcześniejszych było dokładnie to samo) zamiast polskich znaków pojawiają się znaki zapytania. Czy to problem CiviCRMa, czy raczej w konfiguracji PDFlib?

M.

michau

  • Administrator/ka
  • Bywam tu często
  • *****
  • Wiadomości: 206
  • Karma: +2/-0
  • Imię: Michał
  • Nazwisko: Mach
Odp: Kodowanie znaków w generowanym PDFie
« Odpowiedź #1 dnia: 05.02.2015, 23:57 »
Hm, ciężko zgadnąć bez dokładniejszego zbadania sprawy. Zakładałbym, że to raczej problem z PDFlibem, bo jeżeli CiviCRM prawidłowo wyświetla polskie znaki, to nie widzę przyczyny, dla której miałby psuć je przy "wpychaniu" do szablony do generowania PDFa.

Jesteś w stanie podrzucić więcej informacji na temat serwera?

Pozdr,m

oczy

  • Nowicjusz/ka
  • *
  • Wiadomości: 19
  • Karma: +0/-0
  • Imię: Marcin
  • Nazwisko: Oczkowski
Odp: Kodowanie znaków w generowanym PDFie
« Odpowiedź #2 dnia: 09.02.2015, 09:40 »
Stoi to u nas, FreeBSD 9.2, pdflib-7.0.5_2, pecl-pdflib-2.1.10, civicrm 4.5.4 na Drupalu.

michau

  • Administrator/ka
  • Bywam tu często
  • *****
  • Wiadomości: 206
  • Karma: +2/-0
  • Imię: Michał
  • Nazwisko: Mach
Odp: Kodowanie znaków w generowanym PDFie
« Odpowiedź #3 dnia: 09.02.2015, 14:58 »
Polskie locale jest na serwerze zainstalowane? (nie znam się na FreeBSD, ale zakładam, że problemy mogą być podobne co na GNU/Linux).

m

oczy

  • Nowicjusz/ka
  • *
  • Wiadomości: 19
  • Karma: +0/-0
  • Imię: Marcin
  • Nazwisko: Oczkowski
Odp: Kodowanie znaków w generowanym PDFie
« Odpowiedź #4 dnia: 09.02.2015, 15:17 »
Zainstalowane. Inne automaty ładnie generują dokumenty z polskimi znakami - nie w PDF, bo CiviCRM jest jedyną zainstalowaną aplikacją produkującą PDFy.


michau

  • Administrator/ka
  • Bywam tu często
  • *****
  • Wiadomości: 206
  • Karma: +2/-0
  • Imię: Michał
  • Nazwisko: Mach
Odp: Kodowanie znaków w generowanym PDFie
« Odpowiedź #5 dnia: 09.02.2015, 18:38 »
Z opisywanych okoliczności zakładałbym coś na styku PHP i PDFliba. Nie musi to być przyczyna, ale wydaje się najbardziej prawdopodobna. Zanim zacząłbym dłubać na tym froncie, sprawdziłbym w CiviCRMie czy przynajmniej dwa/trzy generowania PDFów konsekwentnie odmawiają uwzględniania polskich znaczków (np. generowanie raportu, generowanie listu, label do wysyłki). Jeżeli wszystkie zachowują się spójnie (błędnie), raczej szukałbym przyczyny w niższej warstwie.

Dawaj znać na bieżąco jakie są efekty, może coś mi się uda zasugerować na podstawie objawów.

Pozdr,m

marcineq

  • Jestem tu od niedawna
  • **
  • Wiadomości: 95
  • Karma: +2/-0
  • Imię: Marcin
  • Nazwisko: Lewandowski
Odp: Kodowanie znaków w generowanym PDFie
« Odpowiedź #6 dnia: 21.01.2017, 01:20 »
Odświeżam. Mam civika na home działający pod wp. Niestety generowanie PDFów wykrzacza mi polskie znaczki. Dodam, że przy eksporcie do csv albo do excela problemów nie ma, podobnie przy wyświetlaniu.

Gdzie szukać przyczyny?

michau

  • Administrator/ka
  • Bywam tu często
  • *****
  • Wiadomości: 206
  • Karma: +2/-0
  • Imię: Michał
  • Nazwisko: Mach
Odp: Kodowanie znaków w generowanym PDFie
« Odpowiedź #7 dnia: 26.01.2017, 10:38 »
Hej,

W naszym przypadku pomogła wymiana biblioteki dompdf znajdującej się w katalogu vendor/dompdf (wersja CiviCRM 4.6/4.7) na najnowszą wersję (0.7.0), którą można ściągnąć stąd: https://github.com/dompdf/dompdf/releases/tag/v0.7.0

Trzeba tylko uważać, żeby wykonać dodatkowe kroki "czyszczące", które są realizowane w trakcie pakowania tej biblioteki przy budowaniu paczek - szczegóły w skrypcie https://github.com/civicrm/civicrm-core/blob/master/tools/scripts/composer/dompdf-cleanup.sh

Kroki:
1. Skasować katalog vendor/dompdf/dompdf
2. Ściągnąć i rozpakować w tym miejscu nową wersję biblioteki
3. Upewnić się, że nie istnieją pliki i katalogi: vendor/dompdf/dompdf/dompdf.php, vendor/dompdf/dompdf/load_font.php, vendor/dompdf/dompdf/www
4. W pliku vendor/dompdf/dompdf/lib/html5lib/TreeBuilder.php podmienić wszystkie wystąpienia ciągu znaków 'debug_print_backtrace();' na ciąg znaków 'CRM_Core_Error::backtrace("backTrace", TRUE);'

Przetestowane na wersjach 4.6 i 4.7 CiviCRMa.

Pozdrowienia,
Michał



marcineq

  • Jestem tu od niedawna
  • **
  • Wiadomości: 95
  • Karma: +2/-0
  • Imię: Marcin
  • Nazwisko: Lewandowski
Odp: Kodowanie znaków w generowanym PDFie
« Odpowiedź #8 dnia: 09.08.2017, 00:13 »
I znów odświeżam, niestety.

Nowe, pisane od zera treści wiadomości i plików generuje mi bez najmniejszego problemu - z pięknymi ogonkami. Problem jest w szablonach z poprzedniej wersji (4.7.22) (obecnie siedzę na 4.7.23), tam wykrzacza mi się wszystko. Oczywiście dompdf poprawiony zgodnie z instrukcją. Błąd pojawia się np. przy generowaniu faktur. Być może brakuje jakiegoś fonta, który nie obsługuje oonków, choć w WYSIWIG widzę wszystko ok.
Drupa 7.56,

Popróbuję na wersji deve ale... chyba nici.


Ps.  Jak zmienię font w treści mailika - wychodzi ładny i polski PDF, Tylko nie chce mi się bawić i pisać workflow od nowa, żeby zaktualizować fonty:/

Edit: Pracuję nad podmianą fontów w dompdf na obsługujących UTF8, bo nie podobają mi się fotny z dejaVu bo widać większą literkę przy polskim znaku. Gdy tylko stworzę to się podzielę gotowym plikiem do podmiany.
« Ostatnia zmiana: 09.08.2017, 12:42 wysłana przez marcineq »

michau

  • Administrator/ka
  • Bywam tu często
  • *****
  • Wiadomości: 206
  • Karma: +2/-0
  • Imię: Michał
  • Nazwisko: Mach
Odp: Kodowanie znaków w generowanym PDFie
« Odpowiedź #9 dnia: 16.08.2017, 14:57 »
Może być faktycznie tak, że po stronie serwera (tam gdzie jest generowany PDF) nie są dostępne konkretne fonty użyte w szablonie. Trzeba zidentyfikować trefny font i albo zamienić go na inny, albo upewnić się, że jest zainstalowany na serwerze?

Pozdr,m

marcineq

  • Jestem tu od niedawna
  • **
  • Wiadomości: 95
  • Karma: +2/-0
  • Imię: Marcin
  • Nazwisko: Lewandowski
Odp: Kodowanie znaków w generowanym PDFie
« Odpowiedź #10 dnia: 19.08.2017, 22:21 »
Może być faktycznie tak, że po stronie serwera (tam gdzie jest generowany PDF) nie są dostępne konkretne fonty użyte w szablonie. Trzeba zidentyfikować trefny font i albo zamienić go na inny, albo upewnić się, że jest zainstalowany na serwerze?

Pozdr,m

Według dokumentacji dompdf fonty są w katalogu dompdf. Są one w formacie <o mój boże nie pamiętam jakim>. Można przetworzyć fonty z ttf na tamten format ale... wymaga to instalacji dodatkowego modułu do dompdf i wywołania tego w ssh/wierszu poleceń linuksowym.
Jam wraz z moim jednoosobowym działem IT usiłuję zrobić to na witrualnej maszynie.
Co śmieszne, dodawanie fontów do wersji dompdf 0.6 było proste, łatwe i przyjemne. Przy 0.7 jest gorsze. Gdy jednak zakończę pracę sukcesem <jakimkolwiek, może nawet podmienię dompdf na starszą wersję:P> dam znać i zamieszczę instrukcję.
Niestety w wyniku burz z zeszłego tygodnia prace schodzą na plan bardzodalszy. Obecnie ogarniam ładniejszy wygląd wiadomości z workflow (orka na ugorze jak dla mnie:) ) i próbuję zorganizować POLSKIEGO providera smsów:). Trzymajcie kciuki :)
« Ostatnia zmiana: 27.08.2017, 01:12 wysłana przez marcineq »

michau

  • Administrator/ka
  • Bywam tu często
  • *****
  • Wiadomości: 206
  • Karma: +2/-0
  • Imię: Michał
  • Nazwisko: Mach
Odp: Kodowanie znaków w generowanym PDFie
« Odpowiedź #11 dnia: 22.08.2017, 14:43 »
Też się właśnie nadzialiśmy na ten problem. Pewnie jeszcze w tym tygodniu Tomek będzie na to patrzeć. Jak nam się uda naprawić kłopot, podzielimy się na pewno rozwiązaniem,

Pozdr,m

marcineq

  • Jestem tu od niedawna
  • **
  • Wiadomości: 95
  • Karma: +2/-0
  • Imię: Marcin
  • Nazwisko: Lewandowski
Odp: Kodowanie znaków w generowanym PDFie
« Odpowiedź #12 dnia: 22.08.2017, 16:31 »
Pytanie trochę ot w stosunku do PDF. Udaje się Wam wygenerować w CiviLetter plik worda albo openoffice?
Z wtyczką do xls wszelkie raporty ładnie mi się generują.

michau

  • Administrator/ka
  • Bywam tu często
  • *****
  • Wiadomości: 206
  • Karma: +2/-0
  • Imię: Michał
  • Nazwisko: Mach
Odp: Kodowanie znaków w generowanym PDFie
« Odpowiedź #13 dnia: 23.08.2017, 10:55 »
Z tego co wiem, to nie próbowaliśmy chyba.

Pozdr,m

scardinius

  • Nowicjusz/ka
  • *
  • Wiadomości: 12
  • Karma: +0/-0
  • Imię: Tomasz
  • Nazwisko: Pietrzkowski
Odp: Kodowanie znaków w generowanym PDFie
« Odpowiedź #14 dnia: 28.08.2017, 16:07 »
Hej,

trochę ten temat ostatnio mieliłem dlatego podzielę się moim doświadczeniem.

Jeśli brakuje czcionek takich jak Arial czy Trebuchet MS to należy je zainstalować z tego polecenia, oczywiście na serwerze:

sudo apt-get install ttf-mscorefonts-installer

Potem czcionkę trzeba "załadować" do dompdf za pomocą narzędzia load_font.php, bo samo skopiowanie plików czcionek do odpowiedniego podkatalogu w dompdf nie wystarcza!

* ściągnąć https://raw.githubusercontent.com/dompdf/utils/master/load_font.php
* skopiować load_font.php do głównego katalogu civicrm i poprawić require_once na
* require_once "vendor/autoload.php";

Teraz można załadować takim poleceniem:

php load_font.php 'Verdana' /usr/share/fonts/truetype/msttcorefonts/Verdana.ttf

W ten sposób można załadować dowolną czcionkę ttf wskazując ścieżkę do niej.

Jeśli chodzi o drukowanie etykiet na koperty to proponuję zmienić ustawienie każdej z etykiet na inną czcionkę niż Helveticę, która jest domyślnie wybrana (Administer > Communications > Label Formats)


PS. Trzymam kciuki za Polskiego dostawcę smsów! :-)