IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   Бесплатный PDF принтер? (https://www.imho.ws/showthread.php?t=104250)

PLP 29.05.2006 11:25

Бесплатный PDF принтер?
 
Добрый день.

Задача все та же - программно конвертировать HTML документы в PDF. Это можно делать, распечатывая на виртуальном PDF принтере HTML документы, загруженый е TWebBrowser:
WebBrowser1.ControlInterface.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut);

Нужно, чтобы эта печать происходила в фоновом режиме - без участия пользователя. Проблема в том, что PDF принтера при обращении к ним показывают диалоги: "Сохранить как", "Очередь печати" или просто рекламу :( .

Нужен бесплатный PDF принтер, который может безо всяких диалогов просто сохранить PDF документ в файл в известном месте (дальше разберемся). Есть такие?

Спасибо.

GOre01 29.05.2006 11:52

Почему бы не попробовать преобразование HTML (XHTML) в pdf используя XSLT шаблон преобразования? На мой взгляд, перевести чистый HTML в XHTML или XML довольно просто, а далее, используя шаблон, получить pdf. XSLT парсеры есть в достатке, тотже MSXML поддерживает XSLT преобразование. Самих шаблонов для перевода XML в PDF в сети полно.

Я думаю, стоит попробовать.

crawler 29.05.2006 15:59

CutePdf

что-то вроде
-sOutputFile="%1" -c save pop -f

PLP 02.06.2006 18:14

Цитата:

Сообщение от crawler
CutePdf

что-то вроде
-sOutputFile="%1" -c save pop -f

По всякому пробовал использовать эти параметры - нет реакции. Как правильно использовать?

Я посылаю документ на печать ShellExecute... всегда открывается диалог выбора принтера. Что сдетать, чтобы шла печать на принтер по умолчанию без запроса?

crawler 05.06.2006 13:08

Покажи свою команду ShellExecute

PLP 05.06.2006 14:27

ShellExecute(0, 'print', PChar(HTMLFilename), '-sOutputFile="%1" -c save pop -f', '', SW_HIDE);

Например так. При этом сначала выбирается "CutePDF Writer" принтер по умолчанию. На параметры ShellExecute не обращает внимания.

А вообще у меня такое ощущение, что эти параметры (-sOutputFile="%1" -c save pop -f) предназначаются GhostScript'y. Ведь когда Shell запускет печать HTML документа - деле выполняется команда ""C:\Program Files\Microsoft Office\Office10\msohtmed.exe" /p %1" и чтобы не возникал диалог выбора принтера (и шла печать на умолчательный принтер) нужно подавать какой-то параметр для msohtmed.exe - какой, я так и не нашел.

Вот почему я думаю на Ghost: здесь http://www.cutepdf.com/Support/faq.asp#Writer
в низу странички написано:
How to use other Ghostscript or PS2PDF converter with CutePDF Writer?
CutePDF Writer detects the installation of Ghostscript automatically. If you want to use other converter application, simply create a Setup.ini file in "%Program Files%\Acro Software\CutePDF Writer" folder and put following parameters in it.

[Parameters]
Command=put exe filename here (e.g. C:\gs\bin\gswin32c.exe)
Arguments=put arguments here (e.g. -sOutputFile="%1" -c save pop -f -)

Я пробовал писать туда вместо ="%1" - путь и имя файла PDF - фиг там, все равно возникает диалог для выбора имени и пути для сохранения PDF файла.

crawler 05.06.2006 14:57

Ту версию что позволяет обходить диалоги они продают. http://www.cutepdf.com/Solutions/pdfwriter2.asp

Посмотри http://www.tufat.com/s_html2ps_html2pdf.htm, вроде ГНУ.

PLP 05.06.2006 15:11

Продают custom причем к нему еще нужен расширенный пакет... не самый удачный вариант.

Я теперь рассматриваю вариант с Active PDF forms - т.е. ищу программный путь создания PDF с полями для ввода текста. При этом HTML не нужен (он был нужен как промежуточный формат). Т.е. цель - создать PDF полями для ввода, пользователь вносит данные в поля формы PDF, и потом он превращается в "простой" PDF - без полей. Как это сделать пока не знаю... смотрю разные SDK... Может есть какие соображения?

Цитата:

Сообщение от crawler
Посмотри http://www.tufat.com/s_html2ps_html2pdf.htm, вроде ГНУ.

Находил варианты скриптов на PHP b PERL, но я не знаю как их использовать - у меня клиентская часть на Delphi.

crawler 06.06.2006 14:26

Попробуй напоследок http://www.wizards.de/~frank/pstill.html

Если честно то я тебя не понял. Если ты запускаешь свою прогу на дельфях - какие заморочки с формами ?

PLP 06.06.2006 21:16

Цитата:

crawler:
Если ты запускаешь свою прогу на дельфях - какие заморочки с формами ?
Счас скажу. Задача такая: есть сервер и клиенты, сервер формирует отчеты и отсылает клиентам (клиенты хотят иметь PDF отчеты). Проблема в том, что при формировании сервер не знает всех необходимых для отчета данных. Но! эти недостающие данные знает сам клиент (т.е. он может доввести недостающие данные на месте). Поэтому рассматривались 2 варианта выхода:

1. Формировать HTML отчеты (т.к. это просто текст - с ним легко работать), затем отсылать клиентам и у них при помощи дельфийского интерфейса добавлять недостающие данные в HTML, а затем печатать этот HTML PDF принтером. В итоге PDF.

2. На сервере формировать активные PDF c полями для ввода текста. На клиенте пользователь открывает их в бесплатном AReader'e, заполняет получает готовые PDF.

Получается, что второй путь проще (хотя и там есть свои сложности, но наверное выбор будет в его пользу).

crawler 07.06.2006 17:20

Я бы сделал так : сервер делает ХТМЛ форму, клиент заполняет ее и посылает на сервер. Сервер формирует PDF и посылает клиенту. Скрипты для создания PDF на сервере ты уже видел.
Другой вариант - твоя прога получает форму, заполняет ее и сама создает PDF. Есть готовые компоненты для Дельфи. Например http://delphi.icm.edu.pl/authors/a0001086.htm , http://www.delphi32.com/vcl/3346/.

А вот еще пару виртуальных PDF драйверов:
http://www.pdfdesk.com/winpdf.html ( http://www.pdfdesk.com/source/devinter.htm )- вроде и бесплатный и управляемый
http://www.bullzip.com/products/pdf/...o.php#Settings Точно бесплатный и управляемый


Часовой пояс GMT +4, время: 20:51.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.