From 781bcb652cbf42d348a7a290aa1d243c4ac5b65a Mon Sep 17 00:00:00 2001 From: jesusr Date: Tue, 8 Sep 2009 19:28:31 +0000 Subject: [PATCH] PowerPDF, initial fix for output of text no converted from UTF8 to ansi encoding on linux (which do not do ansi convertion) git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@956 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/powerpdf/PdfDoc.pas | 4 ++++ components/powerpdf/PdfTypes.pas | 14 ++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/components/powerpdf/PdfDoc.pas b/components/powerpdf/PdfDoc.pas index 5618c0449..ab4ffb897 100644 --- a/components/powerpdf/PdfDoc.pas +++ b/components/powerpdf/PdfDoc.pas @@ -2003,10 +2003,14 @@ procedure TPdfCanvas.ShowText(s: string); var FString: string; begin + {$IFDEF LAZ_POWERPDF} + FString := '<' + _UTF8StrToUnicodeHex(s) + '>'; + {$ELSE} if _HasMultiByteString(s) then FString := '<' + _StrToHex(s) + '>' else FString := '(' + _EscapeText(s) + ')'; + {$ENDIF} WriteString(FString + ' Tj'#10); end; diff --git a/components/powerpdf/PdfTypes.pas b/components/powerpdf/PdfTypes.pas index 1e5f0d021..fbc17bc30 100644 --- a/components/powerpdf/PdfTypes.pas +++ b/components/powerpdf/PdfTypes.pas @@ -299,6 +299,7 @@ type function _GetCharCount(Text: string): integer; {$IFDEF LAZ_POWERPDF} + function _UTF8StrToUnicodeHex(const Value:string): string; procedure PdfLazRegisterClassAlias(aClass: TPersistentClass; Alias: string); function PdfLazFindClass(aClassName: string):TPersistentClass; {$ENDIF} @@ -1143,6 +1144,19 @@ begin end; {$IFDEF LAZ_POWERPDF} + +function _UTF8StrToUnicodeHex(const Value: string): string; +var + W: Widestring; + i: Integer; +begin + result := ''; + W := UTF8Decode(Value); + for i:=1 to Length(W) do begin + Result := Result + IntTohex(Word(W[i]), 4); + end; +end; + procedure PdfLazRegisterClassAlias(aClass: TPersistentClass; Alias: string); begin Classes.RegisterClass(aClass);