LazReport экспорт в PDF проблема с русским. Чем заменить?
Модератор: Модераторы
LazReport экспорт в PDF проблема с русским. Чем заменить?
Как я понял это старая проблема - при экпорте в pdf, русский выводится как знаки вопроса.
Решения к сожалению не нашел и на текущий момент мне видится едиственно (хоть и кривое) решение -
экспортировать отчет в html, а потом, каким то образом , внешней консольной утилитой конвертировать в pdf.
Может кто подскажет (под винду) фриваре консольный конвертер, не требующий инсталляции(если такой конечно есть в природе).
Вариант с виртуальным pdf принтером в моем случае - самый худший вариант и почти не рассматривается, web - сервисы тоже не канают, ибо возможна автономная работа клиента.
На выходе надо иметь от одного до полутора тысячи отчетов в pdf.
Решения к сожалению не нашел и на текущий момент мне видится едиственно (хоть и кривое) решение -
экспортировать отчет в html, а потом, каким то образом , внешней консольной утилитой конвертировать в pdf.
Может кто подскажет (под винду) фриваре консольный конвертер, не требующий инсталляции(если такой конечно есть в природе).
Вариант с виртуальным pdf принтером в моем случае - самый худший вариант и почти не рассматривается, web - сервисы тоже не канают, ибо возможна автономная работа клиента.
На выходе надо иметь от одного до полутора тысячи отчетов в pdf.
Вдруг кто пойдет моим кривым путем...
Похоже, что https://code.google.com/p/wkhtmltopdf частично решает проблему. Попробовал конвертнуть пару файлов, на выходе почти то что надо
(проверял пока только по win)
Похоже, что https://code.google.com/p/wkhtmltopdf частично решает проблему. Попробовал конвертнуть пару файлов, на выходе почти то что надо
(проверял пока только по win)
...шли годы
Еще один кривой, но более приближенный к нужному мне результату вариант.
Из ImageMagick-6.8.5-Q16 взял:
convert.exe и *.dll
дальше схематично примерно так:
для правильной сортировки по имени файлов(которую использует convert.exe) небольшая правка LR_e_img
Т.е. отчет экспортируется во временный каталог (в случае когда экспорт идет в изображение (я выбрал png) для каждой страницы отчета создается отдельный файл)
Дальше запускается внешний конвертер.
Плюсы:
1. Не надо переделывать отчеты.
2. PDF полностью идентичен оригиналу.
Минусы:
1. Внешний convert.exe
2. 12 метров (пожатые upx-ом 5 метров) *.dll
3. Конвертация больших отчетов (100 и более страниц) очень нехило отжирает памяти.
4. Процесс не очень быстрый (по сравнению с экспортом в FR4)
5. маздай онли.
Вариант в духе incredible machine и исключительно на безрыбье, но рабочий
Еще один кривой, но более приближенный к нужному мне результату вариант.
Из 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 и исключительно на безрыбье, но рабочий
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
при экпорте в pdf, русский выводится как знаки вопроса.
По идее должнен работать генератор виртуальных шрифтов (256-символьных выборок из юникодного шрифта), включаемых в сам файл отчета - тогда при наличии файлов шрифштов в системе все должно быть ОК.
А может у Вас просто не установлены PSF (или обычные TTF, но заалиасенные на PSF файлом "C:\windows\fonts\FontMap") шрифты, используемые в документе ? Откройте созданный отчет в FoxitReader-е и посмотрите (в свойствах файла) что за шрифты зашиты в отчет.
Судя по многочисленным "только вопросам" без ответов, которые гуглятся на эту тему, проблема где-то очень глубоко, куда мне не донырнуть. Мне кажется ,что и fastrport портирован без экспорта по той же причине.
Есть ещё LazReport
Есть ещё Fortres Report (именно так, с одной буквой s пишется)
Есть ещё Fortres Report (именно так, с одной буквой s пишется)
hinst Что в лоб, что по лбу...
Все они без учета кириллицы.
Все они без учета кириллицы.
amateur писал(а):hinst Что в лоб, что по лбу...
Все они без учета кириллицы.
Ты уже оба проверил?
Или это в документации к ним сказано?
Да и вообще, что за "учёт кириллицы" такой, надо просто чтобы поддерживалась кодировка UTF-8 или UTF-16, а не "учёт кириллицы"
1. проверил;
2. повторюсь (кириллица нуна только русскоязычным (сталкивался только с кирилицей, возможно и с другими "разновидностями" проблемки)), учитывая что компоненты делаются с учетом только под себя следует вывод - "болт" на все остальное. Кому надо доработает;
3. Если не ошибаюсь то экспортируемый пдф - обыкновенный текстовый файл (ну почти обыкновенный);
п.с.
Кстати, ответьте плиз (hinst не конкретно Вы): на КОЙ трогать и винить лазрепорт если экспорт через PowerPDF? Возможно, вопрос риторический...
То что на выхлопе дает PowerPDF не вариант что ютф. Сталкивался с такими изысками (PowerPDF не смотрел) - показывает ютф но выхлоп зависит от системы и если "прохлопал" то получил инопланетные символы (смотрел одну передачу: дык тама бабка грила о факсе который не понял кодировку отфигачил страницу зябликами. Дык она всерьез посчитала что с ней инопланетяне болтают. Исследовали и даже расшифровали "контакт"
).
2. повторюсь (кириллица нуна только русскоязычным (сталкивался только с кирилицей, возможно и с другими "разновидностями" проблемки)), учитывая что компоненты делаются с учетом только под себя следует вывод - "болт" на все остальное. Кому надо доработает;
3. Если не ошибаюсь то экспортируемый пдф - обыкновенный текстовый файл (ну почти обыкновенный);
п.с.
Кстати, ответьте плиз (hinst не конкретно Вы): на КОЙ трогать и винить лазрепорт если экспорт через PowerPDF? Возможно, вопрос риторический...
То что на выхлопе дает PowerPDF не вариант что ютф. Сталкивался с такими изысками (PowerPDF не смотрел) - показывает ютф но выхлоп зависит от системы и если "прохлопал" то получил инопланетные символы (смотрел одну передачу: дык тама бабка грила о факсе который не понял кодировку отфигачил страницу зябликами. Дык она всерьез посчитала что с ней инопланетяне болтают. Исследовали и даже расшифровали "контакт"
Проблема именно в PowerPDF тут я проводил изыскания.
Согласен на все 100%. Так как проблема ооооочень старая. И возмущений на эту тему тоже много, но разрабы игнорируют. Так как им хватает однобайтного вывода.
amateur писал(а):компоненты делаются с учетом только под себя следует вывод - "болт" на все остальное
Согласен на все 100%. Так как проблема ооооочень старая. И возмущений на эту тему тоже много, но разрабы игнорируют. Так как им хватает однобайтного вывода.
Эх, а я так надеялся, что это:
в файле PReport.pas поможет.....
Ан нет(((
Код: Выделить всё
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 поможет.....
Ан нет(((
Я для экспорта в пдф устанавливал пдф-принтер.
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
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
Единственное - для виндовых приложений надо добавить библиотеки дополнительные:
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
