LazReport экспорт в PDF проблема с русским. Чем заменить?

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

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

LazReport экспорт в PDF проблема с русским. Чем заменить?

Сообщение heks » 30.10.2012 13:07:50

Как я понял это старая проблема - при экпорте в pdf, русский выводится как знаки вопроса.
Решения к сожалению не нашел и на текущий момент мне видится едиственно (хоть и кривое) решение -
экспортировать отчет в html, а потом, каким то образом , внешней консольной утилитой конвертировать в pdf.
Может кто подскажет (под винду) фриваре консольный конвертер, не требующий инсталляции(если такой конечно есть в природе).
Вариант с виртуальным pdf принтером в моем случае - самый худший вариант и почти не рассматривается, web - сервисы тоже не канают, ибо возможна автономная работа клиента.
На выходе надо иметь от одного до полутора тысячи отчетов в pdf.
heks
новенький
 
Сообщения: 29
Зарегистрирован: 23.07.2012 11:50:39

Re: LazReport экспорт в PDF проблема с русским. Чем заменить

Сообщение heks » 31.10.2012 22:00:23

Вдруг кто пойдет моим кривым путем...
Похоже, что https://code.google.com/p/wkhtmltopdf частично решает проблему. Попробовал конвертнуть пару файлов, на выходе почти то что надо
(проверял пока только по win)
heks
новенький
 
Сообщения: 29
Зарегистрирован: 23.07.2012 11:50:39

Re: LazReport экспорт в PDF проблема с русским. Чем заменить

Сообщение heks » 19.07.2013 16:28:51

...шли годы :)
Еще один кривой, но более приближенный к нужному мне результату вариант.
Из ImageMagick-6.8.5-Q16 взял:
convert.exe и *.dll
дальше схематично примерно так:
Код: Выделить всё
       tmpFolder:=GetTempFilename(GetTempDir,'');
       MkDir(tmpFolder);
       
       frReport1.LoadFromFile(ExtractFilePath(ParamStr(0)) + '\Reports\report.lrf');
       frReport1.PrepareReport;
       frReport1.ExportTo(TfrImageExportFilter , tmpFolder+'\tmp_rpt.png');
       
       cmd:=ExtractFilePath(ParamStr(0))+'\convert.exe ' + tmpFolder+ '\*.png ' + SaveDialog1.FileName+'.pdf';

       AProcess := TProcess.Create(nil);
       AProcess.CommandLine := UTF8ToSys(cmd);
       AProcess.Options := AProcess.Options + [poWaitOnExit];
       AProcess.ShowWindow:=swoHIDE;
       AProcess.Execute;
       AProcess.Free;

       DeleteDirectory(tmpFolder,false);


для правильной сортировки по имени файлов(которую использует convert.exe) небольшая правка LR_e_img
Код: Выделить всё
  // было FBmp.SaveToFile(FFileName + '_' + IntToStr(FCurPage) + FFileExt);
  FBmp.SaveToFile(ExtractFileDir(FFileName)+ '\'+ IntToStr(1000000+FCurPage) + '_' + ExtractFileName(FFileName) + FFileExt);

Т.е. отчет экспортируется во временный каталог (в случае когда экспорт идет в изображение (я выбрал png) для каждой страницы отчета создается отдельный файл)
Дальше запускается внешний конвертер.
Плюсы:
1. Не надо переделывать отчеты.
2. PDF полностью идентичен оригиналу.
Минусы:
1. Внешний convert.exe
2. 12 метров (пожатые upx-ом 5 метров) *.dll
3. Конвертация больших отчетов (100 и более страниц) очень нехило отжирает памяти.
4. Процесс не очень быстрый (по сравнению с экспортом в FR4)
5. маздай онли.

Вариант в духе incredible machine и исключительно на безрыбье, но рабочий :-)
heks
новенький
 
Сообщения: 29
Зарегистрирован: 23.07.2012 11:50:39

Re: LazReport экспорт в PDF проблема с русским. Чем заменить

Сообщение debi12345 » 20.07.2013 00:08:59

при экпорте в pdf, русский выводится как знаки вопроса.

По идее должнен работать генератор виртуальных шрифтов (256-символьных выборок из юникодного шрифта), включаемых в сам файл отчета - тогда при наличии файлов шрифштов в системе все должно быть ОК.
А может у Вас просто не установлены PSF (или обычные TTF, но заалиасенные на PSF файлом "C:\windows\fonts\FontMap") шрифты, используемые в документе ? Откройте созданный отчет в FoxitReader-е и посмотрите (в свойствах файла) что за шрифты зашиты в отчет.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: LazReport экспорт в PDF проблема с русским. Чем заменить

Сообщение heks » 25.07.2013 16:00:04

Судя по многочисленным "только вопросам" без ответов, которые гуглятся на эту тему, проблема где-то очень глубоко, куда мне не донырнуть. Мне кажется ,что и fastrport портирован без экспорта по той же причине.
heks
новенький
 
Сообщения: 29
Зарегистрирован: 23.07.2012 11:50:39

Re: LazReport экспорт в PDF проблема с русским. Чем заменить

Сообщение hinst » 25.07.2013 20:53:06

Есть ещё LazReport
Есть ещё Fortres Report (именно так, с одной буквой s пишется)
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: LazReport экспорт в PDF проблема с русским. Чем заменить

Сообщение amateur » 25.07.2013 21:33:35

hinst Что в лоб, что по лбу...

Все они без учета кириллицы.
Аватара пользователя
amateur
энтузиаст
 
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Re: LazReport экспорт в PDF проблема с русским. Чем заменить

Сообщение hinst » 25.07.2013 21:48:40

amateur писал(а):hinst Что в лоб, что по лбу...

Все они без учета кириллицы.


Ты уже оба проверил?
Или это в документации к ним сказано?
Да и вообще, что за "учёт кириллицы" такой, надо просто чтобы поддерживалась кодировка UTF-8 или UTF-16, а не "учёт кириллицы"
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: LazReport экспорт в PDF проблема с русским. Чем заменить

Сообщение amateur » 25.07.2013 23:07:14

1. проверил;

2. повторюсь (кириллица нуна только русскоязычным (сталкивался только с кирилицей, возможно и с другими "разновидностями" проблемки)), учитывая что компоненты делаются с учетом только под себя следует вывод - "болт" на все остальное. Кому надо доработает;

3. Если не ошибаюсь то экспортируемый пдф - обыкновенный текстовый файл (ну почти обыкновенный);

п.с.
Кстати, ответьте плиз (hinst не конкретно Вы): на КОЙ трогать и винить лазрепорт если экспорт через PowerPDF? Возможно, вопрос риторический...
То что на выхлопе дает PowerPDF не вариант что ютф. Сталкивался с такими изысками (PowerPDF не смотрел) - показывает ютф но выхлоп зависит от системы и если "прохлопал" то получил инопланетные символы (смотрел одну передачу: дык тама бабка грила о факсе который не понял кодировку отфигачил страницу зябликами. Дык она всерьез посчитала что с ней инопланетяне болтают. Исследовали и даже расшифровали "контакт" :lol: ).
Аватара пользователя
amateur
энтузиаст
 
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Re: LazReport экспорт в PDF проблема с русским. Чем заменить

Сообщение VirtUX » 26.07.2013 12:44:24

Проблема именно в PowerPDF тут я проводил изыскания.
amateur писал(а):компоненты делаются с учетом только под себя следует вывод - "болт" на все остальное

Согласен на все 100%. Так как проблема ооооочень старая. И возмущений на эту тему тоже много, но разрабы игнорируют. Так как им хватает однобайтного вывода.
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: LazReport экспорт в PDF проблема с русским. Чем заменить

Сообщение java73 » 05.06.2015 18:36:20

Эх, а я так надеялся, что это:
Код: Выделить всё
PDFFONT_CLASS_NAMES: array[0..2] of string = (
                           'FixedWidth',
                           'Arial',
                           'Times-Roman');
  PDFFONT_CLASS_BOLD_NAMES: array[0..2] of string = (
                           'FixedWidth-Bold',
                           'Arial-Bold',
                           'Times-Bold');
  PDFFONT_CLASS_ITALIC_NAMES: array[0..2] of string = (
                           'FixedWidth-Italic',
                           'Arial-Italic',
                           'Times-Italic');
  PDFFONT_CLASS_BOLDITALIC_NAMES: array[0..2] of string = (
                           'FixedWidth-BoldItalic',
                           'Arial-BoldItalic',
                           'Times-BoldItalic');
  ITEM_FONT_NAMES: array[0..2] of string = (
                           'Courier New',
                           'Arial',
                           'Times New Roman');
  ITEM_FONT_CHARSETS: array[0..2] of TFontCharset = (
                           RUSSIAN_CHARSET,
                           RUSSIAN_CHARSET,
                           RUSSIAN_CHARSET);

в файле PReport.pas поможет.....
Ан нет(((
java73
постоялец
 
Сообщения: 257
Зарегистрирован: 21.11.2013 09:08:10

Re: LazReport экспорт в PDF проблема с русским. Чем заменить

Сообщение kosteek » 05.06.2015 18:45:25

Я для экспорта в пдф устанавливал пдф-принтер.
kosteek
постоялец
 
Сообщения: 203
Зарегистрирован: 24.07.2008 14:57:09
Откуда: Украина, г.Славянск

Re: LazReport экспорт в PDF проблема с русским. Чем заменить

Сообщение alexs » 05.06.2015 22:29:11

Cairo-export - всё нормально работает.
Единственное - для виндовых приложений надо добавить библиотеки дополнительные:
freetype6.dll
libfreetype-6.dll
libgthread-2.0-0.dll
libpangocairo-1.0-0.dll libpq.dll
intl.dll
libglib-2.0-0.dll
libiconv-2.dll
libpangoft2-1.0-0.dll
libxml2-2.dll
libcairo-2.dll
libgmodule-2.0-0.dll
liblzma-5.dll
libpangowin32-1.0-0.dll
zlib1.dll
libfontconfig-1.dll
libgobject-2.0-0.dll
libpango-1.0-0.dll
libpng14-14.dll
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь


Вернуться в Lazarus

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 223

Рейтинг@Mail.ru