Printer.Title и строковая кодировка

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Printer.Title и строковая кодировка

Сообщение t-ea » 07.03.2022 14:16:38

Производится печать через PDF-принтер, который использует Printer.Title в качестве имени для результирующего PDF-файла, но заголовок получается как не декодированный UTF8, то есть "Заголовок" становится "Заголовок".
Как сделать чтобы имя файла было нормальным?
Код: Выделить всё
unit ufrmMain;

{$mode objfpc}
{$H+}
{$codepage utf8}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls,
  PrintersDlgs;

type
  TForm1 = class(TForm)
    Button1 : TButton;
    PrintDialog1 : TPrintDialog;
    procedure Button1Click(Sender : TObject);
  private

  public

  end;

var
  Form1 : TForm1;
  s : string;
  su : unicodestring;
  s8 : UTF8String;
  sa : AnsiString;

implementation

uses Printers;

{$R *.lfm}

procedure TForm1.Button1Click(Sender : TObject);
begin
s:='Заголовок string';
su:='Заголовок unicode';
s8:='Заголовок utf8';
sa:='Заголовок ANSI';
if PrintDialog1.Execute then
  with Printer do begin
   Title:=s;
   begindoc;
   enddoc;

   Title:=su;
   begindoc;
   enddoc;

   Title:=s8;
   begindoc;
   enddoc;

   Title:=Utf8ToAnsi(s8);
   begindoc;
   enddoc;


   Title:=sa;
   begindoc;
   enddoc;
end;
end;

end.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
t-ea
новенький
 
Сообщения: 98
Зарегистрирован: 22.09.2006 00:22:34

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: sunjob и гости: 19

Рейтинг@Mail.ru
cron