...шли годы
Еще один кривой, но более приближенный к нужному мне результату вариант.
Из 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 и исключительно на безрыбье, но рабочий
