Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > конвертирование doc и xls в pdf


Автор: matriza 25.6.2008, 17:17
приветствую всех =)

каким образом можно произвести конвертацию из doc и xls в pdf???


после конвертации возможность редактирования pdf не требуется...

Автор: Данкинг 25.6.2008, 18:24
Распечатать на принтере Adobe PDF. ИМХО лучший вариант.

Автор: matriza 25.6.2008, 18:34
а про AdobePDFMakerX никто ничего не знает???

Автор: matriza 25.6.2008, 19:58
и как это можно реализовать с помощью FastReport???

Автор: matriza 26.6.2008, 06:43
пытаюсь сделать через виртуальный принтер так как знаний фаст репорт не хватает...

вот код
Код

procedure TForm1.Button4Click(Sender: TObject);
var wdo, wdoc, wdocs, fil   :   OleVariant;
begin
if OpenDialog1.Execute then
begin
  fil := OpenDialog1.FileName;
  wdo   :=   CreateOleObject('Word.Application');
  wdocs   :=   wdo.Documents;
  wdo.ActivePrinter   :=   'PrimoPDF';
  wdoc   :=   wdocs.Add(fil);
  wdoc.PrintOut(0,   0,   0, fil+'test.pdf');
  //wdoc.PrintOut;
end;
end;

если сделать просто принтаут то классна все делает но тогда самому конечно же приходится нажимать на кнопочку create

а вот если самому попытаться создать test.pdf то пдф создается большего размера чем нада и damage

Автор: Данкинг 26.6.2008, 10:41
Цитата(matriza @ 25.6.2008,  20:58)
и как это можно реализовать с помощью FastReport???

Сам не пробовал, но люди говорят, что через FR PDF может сделаться глючно, в отличие от AdobePDF. А так - кидаешь на форму frxPDFExport и пишешь нечто вроде:

Код

frxPDFExport1.FileName:='c:\zakaz.pdf';
frxReport1.PrepareReport();
frxReport1.Export(frxPDFExport1);



Автор: matriza 26.6.2008, 15:01
извиняюсь возможно за глупый вопрос...


но я не могу понять как именно привязять doc-файл к отчету... в репорте насколько я понимаю должно что нить быть из чего нужно сделать экспорт pdf

Автор: matriza 26.6.2008, 16:31
и ещё один вопросик...

при обработке этого кода
Код

  _PrintToFile := true;
  _OutFileName := 'test.pdf';
  _ActivePrinterMacGX := EmptyParam;
  WordApplication1.PrintOut(EmptyParam, EmptyParam, EmptyParam, _OutFileName, EmptyParam,
                                         EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, _PrintToFile,
                                         EmptyParam, _ActivePrinterMacGX, EmptyParam,
                                         EmptyParam, EmptyParam, EmptyParam,
                                         EmptyParam);


если переменной _ActivePrinterMacGX присвоить значение названия принтера например _ActivePrinterMacGX := 'PrimoPDF'; то программа не находит данный принтер и его приходится ставить по умолчанию ручками и делать EmptyParam - скорее всего неверно использую данный параметр

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

Автор: Данкинг 26.6.2008, 16:55
Цитата(matriza @  26.6.2008,  16:01 Найти цитируемый пост)
но я не могу понять как именно привязять doc-файл к отчету... 

А, в этом смысле... Я тоже не знаю, на этот мой вопрос здесь так никто и не ответил: я спрашивал, как в OLE-объект загрузить вордовский документ.


Цитата(matriza @  26.6.2008,  17:31 Найти цитируемый пост)
WordApplication1.PrintOut(EmptyParam, EmptyParam, EmptyParam, _OutFileName, EmptyParam,
                                         EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, _PrintToFile,
                                         EmptyParam, _ActivePrinterMacGX, EmptyParam,
                                         EmptyParam, EmptyParam, EmptyParam,
                                         EmptyParam);

А енто шо? smile Всё же проще:

Код

WordApplication1.activedocument.printout;

Автор: matriza 26.6.2008, 17:09
Код

WordApplication1.activedocument.printout;


это конечно здорово =) но при таком коде вызывается принтер который будет использоваться например у меня вызовется принтер от нитро-пдф и мне нужно будет задать параметры нажать на кнопку create и я получу свой пдф

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

Автор: Данкинг 26.6.2008, 18:33
Цитата(matriza @  26.6.2008,  18:09 Найти цитируемый пост)
окон не вылазило а просто создался бы пдф-файл

У AdobePDF никаких окон и не вылазит кроме "сохранить как..." smile 

Автор: matriza 26.6.2008, 19:45
ясна =) к утру тогда отрою AdobePDF поставлю и посмотрю как он пдф создаст...

а так все таки оч хочется разобраться с FastReport

мне кажется чтобы экспортировать doc и xls нужно заюзать 
Код

procedure TForm1.frxReport1GetValue

 и там как то запихать... но пока не получается ничего... буду разбираться надеюсь что нить придумаю...

Автор: Данкинг 26.6.2008, 20:01
Цитата(matriza @  26.6.2008,  20:45 Найти цитируемый пост)
ясна =) к утру тогда отрою AdobePDF поставлю и посмотрю как он пдф создаст...

Точнее, Adobe Acrobat Professional нужно поставить. От и соответствующий принтер сделает.

Цитата(matriza @  26.6.2008,  20:45 Найти цитируемый пост)
буду разбираться надеюсь что нить придумаю... 

Придумаешь - расскажешь. smile 

Автор: matriza 27.6.2008, 10:12
все таки так и не захотелось ставить принтер AdobePDF... поставил Nitro PDF Driver =) как то мне привычнее =) и вот при печати с вызовом PrintOut с параметрами при указании что нужно печатать в файл он все равно этого не делает и открывает диалоговое окно сохранения pdf... можно ли как нибудь это обойти???

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)