Старые песни о PDF
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
Старые песни о PDF
Привет всем !
Заранее извиняюсь, что поднимаю заюзанную тему ...
Но тут попросили посмотреть и переделать малой кровью чужую старую программу ...
Удалось ли современной науке победить кракозябры при экспорте отчётов напрямую в PDF ?
Про ScanMode - знаю, но что-то этот режим у меня падает на больших отчётах (больше 10 листов).
Заранее спасибо.
Заранее извиняюсь, что поднимаю заюзанную тему ...
Но тут попросили посмотреть и переделать малой кровью чужую старую программу ...
Удалось ли современной науке победить кракозябры при экспорте отчётов напрямую в PDF ?
Про ScanMode - знаю, но что-то этот режим у меня падает на больших отчётах (больше 10 листов).
Заранее спасибо.
За теми кто отстал - не возвращаться. (С) Кодекс
-
- ✯ Ветеран ✯
- Сообщения: 5006
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Старые песни о PDF
Пока другого варианта, кроме ScanMode, нет. Видел, что падает. Но не всегда, принцип не понял. Не могу сказать, что от количества и/или размера страниц.
Пытался посмотреть, что не так без ScanMode. Сложилось впечатление, что проблема типа в юникоде. Потому что, Total Commander'ом файлл просматривается нормально. Ну, т.е. кракозябр нет. Как-будто просто метки в файле не стоит о кодировке. Или не та стоит.
Была ещё мысль сравнить файлы, которые создаёт Кларион и какой-нибудь драйвер PDF принтера. Но что-то руки не дошли. Да и подумал - может в юникоде заработает.
Пытался посмотреть, что не так без ScanMode. Сложилось впечатление, что проблема типа в юникоде. Потому что, Total Commander'ом файлл просматривается нормально. Ну, т.е. кракозябр нет. Как-будто просто метки в файле не стоит о кодировке. Или не та стоит.
Была ещё мысль сравнить файлы, которые создаёт Кларион и какой-нибудь драйвер PDF принтера. Но что-то руки не дошли. Да и подумал - может в юникоде заработает.
We are hard at work… for you.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
Старые песни о PDF
Падает где-то внутри конвертера WMF -> PNG .NET компоненты ....
Причём после перезагрузки компьютера, какое-то время работает, а потом входит в ступор.
Похоже, что калечный вызов компоненты из ClaRunExt.
Вообще ситуация минорная. Получается, что из Clarion, без использования
офисного пакета или внешних компонент нельзя сформировать хоть какой-то документ
общепринятого формата для обмена отчётами ... (пачку WMF файлов я таковым не считаю).
Причём после перезагрузки компьютера, какое-то время работает, а потом входит в ступор.
Похоже, что калечный вызов компоненты из ClaRunExt.
Вообще ситуация минорная. Получается, что из Clarion, без использования
офисного пакета или внешних компонент нельзя сформировать хоть какой-то документ
общепринятого формата для обмена отчётами ... (пачку WMF файлов я таковым не считаю).
За теми кто отстал - не возвращаться. (С) Кодекс
-
- ✯ Ветеран ✯
- Сообщения: 5006
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Старые песни о PDF
Посмотрел я PDF, который формирует Кларион. В Инете определитель кодировки показывает, что это банальная кодировка 1252. Поэтому есть два варианта. Если есть какой-нибудь тег с кодировкой в файле PDF, надо добавить 1251 кодировку. Если такого нет, и текст должен быть в unicode, нужно найти, где формируется текст и конвертнуть его в Unicode. А сначала надо найти время для проверки моей теории .
We are hard at work… for you.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
Старые песни о PDF
Это есть и в спецификации PDF ... Для текста задаётся шрифт, а в описании шрифта его кодировка ...
Я попробовал просто ручками перебить на юникод пару строк - всё поехало, совсем другое отображение.
В этом случае еще нужно добавлять таблицы отображения геометрии для каждого символа шрифта, а это уже пипец.
В принципе, ситуацию спас бы какой-нибудь адекватный конвертер WMF -> BMP ... В дельфях - это пара строк кода.
За теми кто отстал - не возвращаться. (С) Кодекс
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1378
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
Старые песни о PDF
Есть же конвертер WMF -> PDF
Image2PDF.dll который
Чем не подходит?
Еще есть библиотеки работы с PDF от Tracker Software, я выкладывал. там вроде тоже есть конвертация с wmf, но не пробовал, пока пользуюсь тем что выше
Image2PDF.dll который
Чем не подходит?
Еще есть библиотеки работы с PDF от Tracker Software, я выкладывал. там вроде тоже есть конвертация с wmf, но не пробовал, пока пользуюсь тем что выше
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1378
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
Старые песни о PDF
Код: Выделить всё
I2PDF_License(SELF.PDFG.License)
I2PDF_SetProducer(SELF.PDFG.Producer)
I2PDF_SetCreationDate()
I2PDF_DeleteImagesOnConvert()
case SELF.PDFG.Typ
of 0
I2PDF_MetaToNativePDF()
I2PDF_EmbedFonts()
I2PDF_SetDPI(0)
I2PDF_ForceCodepage(1251)
of 1
I2PDF_SetDPI(150)
My1ClaRunExt &= NEW ClaRunExtClass
end
loop I=1 to records(SELF.PreviewQueue)
GET(SELF.PreviewQueue,I)
LOC:GetFromName = clip(SELF.PreviewQueue)
LOC:FileName2 = clip(SELF.PreviewQueue)&'.wmf'
copy(LOC:GetFromFile,LOC:FileName2)
if SELF.PDFG.Typ
err#=My1ClaRunExt.ImageToPNG(LOC:FileName2,clip(SELF.PreviewQueue)&'.png')
remove(LOC:FileName2)
LOC:FileName2=clip(SELF.PreviewQueue)&'.png'
end
a#=I2PDF_AddImage(LOC:FileName2)
end
if SELF.PDFG.Typ
Dispose(My1ClaRunExt)
end
b#=I2PDF_MakePDF(SELF.PDFG.Filename,choose(SELF.PDFG.RunPDF=1,1,0),LOC:ErrorText,256)
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
Старые песни о PDF
Ну тогда мы возвращаемся к началу.
Потому что, были бы растровые картинки с листами отчёта - а вставить их в PDF проблем-то нет ...
За теми кто отстал - не возвращаться. (С) Кодекс
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1378
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
Старые песни о PDF
Под вторым вариантом имел в виду библиотеки и шаблон для клариона от Tracker Software
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
Старые песни о PDF
Спасибо. Понял ... 200 линий - это не о чём, можно даже не начинать.
У меня есть отчёты, где ReportDesigner падает, приходится линий 100 дорисовывать через Create().
У меня есть отчёты, где ReportDesigner падает, приходится линий 100 дорисовывать через Create().
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
Старые песни о PDF
Посмотрел всех. Пока в SV не решили проблему с кракозябрами в PDF,
остановится на том, что бы тупо печатать отчёт на принтер "Microsoft Print to PDF".
Плюсы:
- Полноценный русский PDF с текстом;
- Самая высокая скорость экспорта больших отчётов;
- Прекрасное качество, нет ограничений на объекты (ну или пока они не известны);
- Нет зависимости от сторонних компонент, не увеличивается размер программы;
- Работает стабильно, не используется глючный интерфейс Clarion -> .NET;
- Тривиальная реализация (20 строк кода);
Минусы:
- Работает только в Windows10. Ну и фиг с ним, все там будем ...
остановится на том, что бы тупо печатать отчёт на принтер "Microsoft Print to PDF".
Плюсы:
- Полноценный русский PDF с текстом;
- Самая высокая скорость экспорта больших отчётов;
- Прекрасное качество, нет ограничений на объекты (ну или пока они не известны);
- Нет зависимости от сторонних компонент, не увеличивается размер программы;
- Работает стабильно, не используется глючный интерфейс Clarion -> .NET;
- Тривиальная реализация (20 строк кода);
Минусы:
- Работает только в Windows10. Ну и фиг с ним, все там будем ...
За теми кто отстал - не возвращаться. (С) Кодекс
Старые песни о PDF
В настоящий момент используем I2PDF. И все бы хорошо, но в режиме фоновой безоконной обработки библиотека периодически валит программу и дальнейшую обработку. Файл не передается - клиент не доволен.
Я так понял, что придется пробовать вариант PDF-принтера...
Возникает ряд вопросов: по определению принтера, назначению имени файла и чтобы без окон.
Игорь Столяров, можно эти 20 строк кода - в студию?
Я так понял, что придется пробовать вариант PDF-принтера...
Возникает ряд вопросов: по определению принтера, назначению имени файла и чтобы без окон.
Игорь Столяров, можно эти 20 строк кода - в студию?
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
Старые песни о PDF
Привет !
Да, в общем-то, ничего военного здесь нет ...
Можно начать с простой переустановки принтера перед СОЗДАНИЕМ отчёта:
И далее уже по вкусу и в контексте решаемой Вами задачи ...
Кстати, экспорт в XPS выполняет аналогично. Только принтер: 'Microsoft XPS Document Writer'
Да, в общем-то, ничего военного здесь нет ...
Можно начать с простой переустановки принтера перед СОЗДАНИЕМ отчёта:
Код: Выделить всё
! Сохранили параметры печати
....
! Переустановили параметры печати на PDF принтер Windows 10
Printer{PropPrint:Device} = 'Microsoft Print to PDF'
Printer{PropPrint:PrintToFile} = True
Printer{PropPrint:PrintToName} = 'полное имя файла.pdf'
Report_MyExportPDF() ! Создали отчёт
! Восстановили параметры печати
....
! Открыли для просмотра (по умолчанию Win10 использует для просмотра PDF броузер EDGE)
If Exist('полное имя файла.pdf') then Run('полное имя файла.pdf').
Кстати, экспорт в XPS выполняет аналогично. Только принтер: 'Microsoft XPS Document Writer'
За теми кто отстал - не возвращаться. (С) Кодекс