IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   Вопрос PDF + DELPHI (https://www.imho.ws/showthread.php?t=104129)

PLP 26.05.2006 09:58

Вопрос PDF + DELPHI
 
Добрый день.

Помогите решить такую задачу. Есть входные файлы в формате HTML их нужно преобразовать в PDF, сделать это нужно программно (Delphi 7).

Я так понимаю это можно сделать с помощью виртуального PDF принтера - вроде есть такие free версии - но я не знаю, как программно из Delphi отправить HTML файл на конкретный принтер (virtual pdf printer) чтобы не вызывалось никаких диалогов и т.п. Подскажите как?

Другой путь, это использовать GhostScript (есть его фри версия) для преобразования файла PostSctript в PDF. В этом варианте я не знаю, как из HTML файла получить PostScript файл?

Никак не могу разобраться...
Спасибо!

MrSerg 26.05.2006 14:49

Вот так можно печатать в Delphi7

Код:

  var
  eQuery: OLECMDF;
  vaIn, vaOut: OleVariant;

procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('D:\AAA\IMHO.ws\misc.php.html');
vaIn:=null;vaOut:=null;
eQuery := Webbrowser1.QueryStatusWB(OLECMDID_PROPERTIES);
if (eQuery and OLECMDF_ENABLED) = OLECMDF_ENABLED then
Webbrowser1.ExecWB( OLECMDID_PROPERTIES, OLECMDEXECOPT_PROMPTUSER, vaIn, vaOut);

procedure TForm1.Button2Click(Sender: TObject);
begin
// напечатает без диалогов
WebBrowser1.ControlInterface.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER,    vaIn, vaOut);
// установка параметров страницы
WebBrowser1.ControlInterface.ExecWB(OLECMDID_PAGESETUP, OLECMDEXECOPT_PROMPTUSER,vaIn, vaOut);
// PREVIEW
WebBrowser1.ControlInterface.ExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut);

Описание на .ExecWB скудное ,я так и не разобрался.
Попытайтесь разобраться сами.

Приведенная программа мне 12 листов напечатала ( собака :) ), без всяких диалогов.

PLP 26.05.2006 21:45

Спасибо, попробую разобраться...

PLP 28.05.2006 15:48

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

// напечатает без диалогов
WebBrowser1.ControlInterface.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut);

Печатает на принтере, выбранном по умолчанию... при этом открывается диалоговое окошко самого вирт. принтера... нужно, чтобы не открывалось.


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

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