Polskie znaki w pliku PDF

0

Witam
PILNIE potrzebuję pomocy odnośnie polskich znaków w dokumencie PDF. Próbowałem dwa rozwiązania:

  1. TnPDF
  2. PowerPDF
    Niestety nie potrafię wygenerować pliku, który poprawnie wyświetlił (wydrukował) polskie znaki.
    Stosuje się w nich procedurę
    CreateFont('Type1',Times-Roman','WinAnsiEncoding');
    Czy ktokolwiek wie co innego można wpisać zamias WinAnsiEncoding?
    W jaki sposób odwołać się do UTF-8?
    Wiem np., że Zamiast Type1 można wpisać TrueType, ale co z kodowaniem znaków?
    PILNIE potrzebuję pomocy!!!
0

The encoding defines the association between a code (from 0 to 255) and a character. The first 128 are fixed and correspond to ASCII; the following are variable. The encodings are stored in .map files. Those available are:
cp1250 (Central Europe)
cp1251 (Cyrillic)
cp1252 (Western Europe)
cp1253 (Greek)
cp1254 (Turkish)
cp1255 (Hebrew)
cp1257 (Baltic)
cp1258 (Vietnamese)
cp874 (Thai)
ISO-8859-1 (Western Europe)
ISO-8859-2 (Central Europe)
ISO-8859-4 (Baltic)
ISO-8859-5 (Cyrillic)
ISO-8859-7 (Greek)
ISO-8859-9 (Turkish)
ISO-8859-11 (Thai)
ISO-8859-15 (Western Europe)
ISO-8859-16 (Central Europe)
KOI8-R (Russian)
KOI8-U (Ukrainian)
Of course, the font must contain the characters corresponding to the chosen encoding.
In the particular case of a symbolic font (that is to say which does not contain letters, such as Symbol or ZapfDingbats), pass an empty string.
The encodings which begin with cp are those used by Windows; Linux systems usually use ISO.
Remark: the standard fonts use cp1252.

0

Po otrzymaniu informacji od Ciebie w TnPDF zmieniłem Winansiencoding na ISO-8859-16 i w dalszym ciągu mam krzaczki, następnie wpisałem zamiast Winansiencoding, cp1250 i też nie polskich znaków.

Prawdopodobie robię coś źle więc przesyłam elementy kodu:

Procedure TPrintPDF.SetFontType;
	Begin
		CreateFont('Type1','Helvetica',                  'cp1250'); //ISO-8859-16, ISO-8859-2
		CreateFont('Type1','Helvetica-Bold',           'cp1250');//ISO-8859-16, ISO-8859-2
		CreateFont('Type1','Helvetica-Oblique',       'cp1250');//ISO-8859-16, ISO-8859-2
		CreateFont('Type1','Helvetica-BoldOblique', 'cp1250');//ISO-8859-16, ISO-8859-2
		CreateFont('Type1','Courier',                     'cp1250');//ISO-8859-16, ISO-8859-2
		CreateFont('Type1','Courier-Bold',          'cp1250');//ISO-8859-16, ISO-8859-2
		CreateFont('Type1','Courier-Oblique',       'cp1250');//ISO-8859-16, ISO-8859-2
		CreateFont('Type1','Courier-BoldOblique',   'cp1250');//ISO-8859-16, ISO-8859-2
		CreateFont('Type1','Times-Roman',           'cp1250');//ISO-8859-16, ISO-8859-2
		CreateFont('Type1','Times-Bold',            'cp1250');//ISO-8859-16, ISO-8859-2
		CreateFont('Type1','Times-Italic',          'cp1250');//ISO-8859-16, ISO-8859-2
		CreateFont('Type1','Times-BoldItalic',      'cp1250');//ISO-8859-16, ISO-8859-2
		CreateFont('Type1','Symbol',                'cp1250');//ISO-8859-16, ISO-8859-2
		CreateFont('Type1','ZapfDingbats',          'cp1250');//ISO-8859-16, ISO-8859-2
	End;

Plik generuję w poniższy sposów:

procedure TForm1.Button1Click(Sender: TObject);
begin
  PDF1:=TPrintPDF.Create(Self);
  PDF1.FileName:='Plik testowy.pdf';
  PDF1.Title:='Title doc';
  PDF1.PageHeight:=700;
  PDF1.PageWidth:=600;
  PDF1.BeginDoc;
  PDF1.LineWidth:=1;
  PDF1.TextOut(25,25,'Linijka tekstu bez polskich liter');
  PDF1.TextOut(25,41,'Zamiast Winansiencoding ==> cp1250');
  PDF1.TextOut(25,63,'Ą |ą |Ę |ę |Ó |ó |Ś |ś |Ł |ł |Ż |ż |Ź |ź |Ć |ć |Ń |ń |');
  PDF1.EndDoc;
  PDF1.Free;
end;

<font size="4">Proszę o POMOC i dokładniejsze przyjrzenie się zagadnieniu.</span>

0

to może tak - jedynym znanym mi, działającym w 100% sposobem wydruku PDFów z delphi z pl ogonkami jest płatny FastReport. Z plcd

Doskonałe efekty daje GhostScript 8.0 + RedMon + ster druk. Acrobat Distiller, wszystko darmowe.
.
Albo darmowa drukarka PDFowa, np toPDF albo PDFCreator

0

Podane przez Ciebie drugie rozwiązanie nie wchodzi w rachubę. Nie będę opisywał co i jak.
W skrócie nie jest możliwe korzystanie z dodatkowych zewnętrznych aplikacji.

Przeoczyłem jeszcze chyba dość ważną informację. Proszę zerknij na to:

Type TPDFOrientation = (poPortrait, poLandscape);
Type TPDFBrushStyle = (poSolid,  poDashed, poBeveled, poInset, poUnderline);
Type TPDFFontName = (poHelvetica,poHelveticaBold,poHelveticaOblique,
poHelveticaBoldOblique,poCourier,poCourierBold,
poCourierOblique,poCourierBoldOblique,poTimesRoman,
poTimesBold,poTimesItalic,poTimesBoldItalic,poSymbol,
poZapfDingbats);

oraz to

Procedure CreateFont(Subtype,BaseFont,Encoding:String);
Constructor TPrintPDF.Create(AOwner: TComponent);
Begin
 Inherited Create(AOwner);
 ObjectOffsetList:=TStringList.Create;
 PageNumberList:=TStringList.Create;
 FontNumberList:=TStringList.Create;
 PDF:=TMemoryStream.Create;
 TempStream:=TMemoryStream.Create;
 ImageStream:=TMemoryStream.Create;
 pTempStream:=TMemoryStream.Create;
 sTempStream:=TMemoryStream.Create;
 cTempStream:=TMemoryStream.Create;
 Font:=TPDFFont.Create;


 Font.Name:=poCourier;
 Font.Size:=12;


 FLineWidth:=1;
 PageWidth:=612;
 PageHeight:=792;
 {$IFDEF USE_ZLIB}
 Compress:=True;
 {$ENDIF}
 Producer:='';
 Author:='';
 Creator:='';
 Keywords:='';
 Subject:='';
End;

Pytanie brzmi czy czcionka, którą stosuje się w konstruktorze może mieć wpływ na to, że nie ma PL?
Jak zastąpić te dwa wiersze na np. HFont (tam można ustawić str kodową) - czy to właściwy kierunek
aby to rozwiązać
PILNE muszę rozwiązać, tą kwestię do środy. Z góry dziękuję.

0

to nie to - jeśli używasz inny charset to trzeba dać do pdfa dodatkowe informacje o czcionce. Jakie - nie wiem, a opis formatu pdfa ciężko znaleźć. Poszukaj np. czegoś takiego

Encoding /BaseEncoding /WinAnsiEncoding
Albo kup komponenty, które to robią | znajdź kogoś kto Ci te, które masz komponenty poprawi, np. za kase - ja nie mam czasu aby szukać i kombinować w imię wspólnego dobra

0

wersja rave reports bex ma polskie ogonki w pdf-ach

0
satq napisał(a)

wersja rave reports bex ma polskie ogonki w pdf-ach
polecam poczytać http://groups.google.com/group/pl.comp.lang.delphi/browse_thread/thread/1317871c0d4e1f7c/38ccd5878103b3b5?lnk=raot no chyba, że się coś mocno w RR zmieniło, ale w tym, które było z D7 i D2k5 pl znaczki nie działały.

0

Pewnie będę bardzo nie oryginalny, ale nie korzystam z wersji bez licencji, tak więc pozostało mi na chwilę obecną Turbo Delphi Explorer, które jest bezpłatne do użytku prywatnie i zarobkowo.

Dziękuję za szczere chęci i sugestje, będę walczył dalej, nawet gdybym musiał stworzyć własną czcionkę do Adoba. :-)

Gdyby komukolwiek przyszło do głowy jakieś rozwiązanie - piszcie.

0

DLA WSZYSTKICH ZAINTERESOWANYCH na podanej poniżej stronie znajdziecie opisy wszelkiego rodzaju typów plików.

http://www.wotsit.org/default.asp

Nie ma rzeczy niemożliwych, są tylko trudne do zrealizowania albo bardzo drogie.

0

Jak już wsponinałem dorwałem strone ściągnąłem plik
PDF o strukturze pliku PDF ha,ha,ha i dałem do tłumaczenia.
Jeżeli nik nic nie będzie miał przeciwko, udostępnię plik po przetłumaczeniu.

NIECH ŻYJE PROGRAMOWANIE W DELPHI
I GDYBY NIE POPAPRANA SKŁADNIA, TO C# TEŻ BYŁBY NIEZŁY.

0

@Misiekd tak zgadza się w wersji Rave Reports BE dostępnej standardowo w środowisku nie ma możliwości druku ogonków do pdf-a natomiast wersja BEX (Borland Edition eXtended) płatna oczywiście, daje rade.

0

jeśli miałbym kupować jakiś silnik do raportów to na pewno nie byłby to ani QuickReport ani RaveReport. Jak dla mnie oczywistym wyborem byłby FastReport

0

Jak weźmiesz pod uwagą cene rave wychodzi lepiej, za rava 8 architect (najbardziej rozbudowana) płaćisz 199$ jako upgrade do wersji standardowej jaka jest w środowisku (be), za FastReport 4 Enterprise Edition muszisz zapłacić 349$. Kwestja ile forsy chcesz wydać ;)

0

kwestia jakości, możliwości i przyjemności pracy.
Licząc 1USD = 2.90 PLN masz odpowiednio
RR 577.10PLN i FR 1012.1PLN. Różnica raptem 435PLN, co przy cenie projektu idącą w tysiące jest jak ugryzienie komara.
Inna sprawa, że na pewno jest spora grupa ludzi, którzy będą ręcznie mazać po kanwasie lub pisać własne systemy wydruków i stracą na to miesiąc albo i dwa no ale "zaoszczędzą" 1000zł :D

Pracowałem z RR, pracuję z FR i nawet jakby FR był 4 razy droższy od RR to i tak bym zainwestował w FR

0

Bardzo dziękuję za informacje o FastReport i RaveReport, zwłaszcza o cenie.
Sądzę, że po napisaniu tej aplikacji nie będę miał problemu z takim drobnym zakupem.
Pozdrawiam i jeszcze raz dzięki.

Dla Tych, jak to napisał powyżej kolega, którzy chcą zaiszczędzić 1000 zł, zapraszam po próbkę tłumaczenia PDF Structure. Piszcie na mój e-mail ([email protected]) prześlę jako załącznik.

Wszystko jest możliwe, tylko część jest niezależna od Ciebie, a reszta wymaga Twojego wysiłku. :-)

0

PDF Encoding:
MacRomanEncoding, MacExpertEncowing, StandartEncoding, WinAnsiEncoding i najważniejszy PDFDocEncoding.
Polskie znaki? dalej nie wiem dokładnie, ale prawdopodobnie /<FE FF> i kod.
Jak będę wiedziałdokladnie dam znać.
Pozdrawiam.

0

Witam serdecznie.
@Misiekd miałem teraz okazje popracować na FastReport i przyznaje Ci rację, Fast połyka Rave-a na śniadanie, jest nieporównywalnie lepszy i bardziej rozbudowany mnogość opcji POWALA. Z czystym sumieniem mogę powiedzieć że jest to najlepsze narzędzie raportujące.

1 użytkowników online, w tym zalogowanych: 0, gości: 1