Мое решение это использовать следующую команду:
start /min winword <filename> /q /n /f /mFilePrint /mFileExit
Это позволяет пользователю указать принтер, нет. копий и т. д.
Заменить <filename>
с именем файла. Он должен быть заключен в двойные кавычки, если он содержит пробелы. (Например, file.rtf
, "A File.docx"
)
Он может быть размещен внутри системного вызова, как в:
system("start /min winword <filename> /q /n /f /mFilePrint /mFileExit");
Вот ++ заголовочный файл C с функциями, которые обрабатывают это так, вы не должны помнить все из если вы используете его часто:
/*winword.h
*Includes functions to print Word files more easily
*/
#ifndef WINWORD_H_
#define WINWORD_H_
#include <string.h>
#include <stdlib.h>
//Opens Word minimized, shows the user a dialog box to allow them to
//select the printer, number of copies, etc., and then closes Word
void wordprint(char* filename){
char* command = new char[64 + strlen(filename)];
strcpy(command, "start /min winword \"");
strcat(command, filename);
strcat(command, "\" /q /n /f /mFilePrint /mFileExit");
system(command);
delete command;
}
//Opens the document in Word
void wordopen(char* filename){
char* command = new char[64 + strlen(filename)];
strcpy(command, "start /max winword \"");
strcat(command, filename);
strcat(command, "\" /q /n");
system(command);
delete command;
}
//Opens a copy of the document in Word so the user can save a copy
//without seeing or modifying the original
void wordduplicate(char* filename){
char* command = new char[64 + strlen(filename)];
strcpy(command, "start /max winword \"");
strcat(command, filename);
strcat(command, "\" /q /n /f");
system(command);
delete command;
}
#endif
Это отличный ответ на заданный вопрос. Я хочу указать на других, которые связаны с этим ответом из других вопросов, что это не подходит для использования на стороне сервера или когда пользователь не зарегистрирован. Это не та ситуация в этом вопросе, но есть и другие вопросы которые ссылаются здесь на использование на стороне сервера, и в таких случаях Office Automation не подходит. Для печати на рабочем столе он идеально подходит. – 2011-04-28 16:49:47