Как проще напечатать отчет в pdf

Обсуждение извечных проблем кларионовских (и не только) отчетов

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
seawolf
Старожил
Сообщения: 213
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

Как проще напечатать отчет в pdf

Сообщение seawolf »

Коллеги!
Посоветуйте приблуду для быстрой печати в pdf. Написал по с6 9055 прогу которая сбрасывает графическое построение через wmf превью на принтер. Стандартные отчеты Clarion не использую.

Нет проблем, но клиент хочет получить pdf. Через Distiller печатает без проблем но таскать его у клиента неохота!

Заранее благодарен!
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Сообщение StillZero »

если Клара EE то смотри сюда, там есть пример вывода в PDF из wmf-очереди http://www.clarionlife.net/content/view/245/39/
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Сообщение Игорь Столяров »

Привет !

Как ни крути, но Clarion через экспорт формирует PDF без внедрения шрифтов и они не гарантировано будут просмтриваться на других компьютерах ...

Distiller (он же в последних версиях Adobe Acrobat - Adobe Printer) формирует идельные PDF файлы. Но он не бесплатный, да по размеру великоват ... Я для таких целей использую бесплатную программу DoPDF - простой и бесплатный принтер для создания PDF. Закачал на FTP форума (размер меньше 1MB) - если интересно посмотри.

Ну а использование - элементарно. Явно указываешь наименование принера и сразу отправляешь отчет на печать. В результате получаешь для просмотра (открываешь) в том же Adobe Reader готовый PDF файл ... Все. :)
seawolf
Старожил
Сообщения: 213
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

Сообщение seawolf »

Спасибо за подсказки уже глянул оба варинта - работают.
Есть вопрос про WMF - чего он такой корявый при просмотре infanview ? Уже просто возникла мысль спихнуть Wmf в Crystal Report но у меня нет уверенности что там это будет иметь человеский вид как на принтере!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Сообщение Игорь Столяров »

Абсолютно нормальный WMF ...
А вот infanview и прочий самопал для работы с векторными картинками действительно не все возможности поддерживает.
Открой WMF к CorelDraw - все прекрасно читается.

К слову, мне особенно понравилось как редактируются Clarion Report WMF в MS Word 2007 - почти сбылась мечта получения редактируемых отчетов из кларионовских программ ....

Да, и еще. Для TEXTBOX в отчетах лучше устанавливать аттрибут Transparent, что бы не было проблем с кодировкой спец. символов. Но это старый известный косяк ... ;)
seawolf
Старожил
Сообщения: 213
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

Сообщение seawolf »

Спасибо за консультацию. Выдал клиенту WMF поглядим чего он там в Crystal Report сделает!
seawolf
Старожил
Сообщения: 213
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

Re: Как проще напечатать отчет в pdf

Сообщение seawolf »

Вернулся в старой теме.
Взял BMP сбросил его ?Image в Detail на весь лист A4 - получил Wmf. Суть в том что весь отчет это одна картинка размера A4
Далее захотел его скинуть в pdf и получаю все время пустой pdf файл (белый фон и все)
Код примерно такой

SaveToPDF PROCEDURE (STRING inFileName) ! Declare Procedure

LocalReportTarget &IReportGenerator
LocalWMFParser WMFDocumentParser
LocalPrintPreviewQueue PrintPreviewFileQueue


PDFReporter CLASS(PDFReportGenerator)
SetUp PROCEDURE(),DERIVED
END

CODE
! Q описан глобально

Free(LocalPrintPreviewQueue)
IF RECORDS(Q)
LOOP J# = 1 to RECORDS(Q)
GET(Q,J#)
LocalPrintPreviewQueue.FileName = Q.WMF_Image_Path
Copy(LocalPrintPreviewQueue.FileName,'d:\1.wmf') ! на всякий случай проверим что wmf есть
ADD(LocalPrintPreviewQueue)
END
LocalReportTarget &= PDFReporter.IReportGenerator
IF LocalReportTarget.AskProperties(FALSE) = Level:Benign
stop(LocalPrintPreviewQueue) ! проверим что в очереди есть wmf файл
LocalWMFParser.Init(LocalPrintPreviewQueue,LocalReportTarget)
Err# = LocalWMFParser.GenerateReport()
END
END

PDFReporter.SetUp PROCEDURE


CODE

PARENT.SetUp
SELF.SetFileName(inFileName)
SELF.SetDocumentInfo('CW Report','invrep','PrintSelectedProduct','PrintAllProducts','','')
SELF.SetPagesAsParentBookmark(True)


И вопрос понятно в том а где-же картинка ?
Самое интересное что если впечатать в отчет текст и не бросать туда картинку то все делается без проблем. Имеем на выходе pdf с этим текстом!
Идем дальше если картинка Image описана в Detail то она не печатается железно. Переносим ее в Header тогда печатается в испорченом виде!

Отвечаю ! Картинка не печаталась потому-что AT(0,0) стоял. У PDF генератора стоит отступ на 180 дюймов Как только эта величина была выставлена все пошло. Картинка портилась поскольку bmp была выдана с граф. редактора xnView. Как только я сделал ее с помощью Ghostscript GPL все заработало. Код выше полностью рабочий!

Осталась еще одна проблема. Размер Pdf получется довольно большой около 1 000 000 байт. Исходный Pdf около 20 000 байт из него выдираем bmp через Ghostscript GPL бросаем к себе дописываем к картинке свои данные (пару строк) и генерим pdf получаем 1 000 000. Zip его давит практически до размеров исходного pdf. Что-то в классе PDF Generator напороли буду ковырять дальше !
Ответить