Mi solución para esto es utilizar el siguiente comando:
start /min winword <filename> /q /n /f /mFilePrint /mFileExit
Esto permite al usuario especificar una impresora, no. de copias, etc.
Reemplace <filename>
con el nombre de archivo. Debe estar entre comillas dobles si contiene espacios. (Por ejemplo file.rtf
, "A File.docx"
)
Se puede colocar dentro de una llamada al sistema como en:
system("start /min winword <filename> /q /n /f /mFilePrint /mFileExit");
Aquí es un archivo de cabecera C++ con funciones que manejar esto por lo que no tiene que recordar todos los conmuta si lo usa con frecuencia:
/*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
Esta es una excelente respuesta a la pregunta. Deseo señalar a otros que están relacionados con esta respuesta con otras preguntas, que esto no es apropiado para el uso del servidor o cuando no hay ningún usuario conectado. Esta no es la situación en esta pregunta, pero hay otras preguntas ese enlace aquí fue sobre el uso del lado del servidor y en esos casos Office Automation no es apropiado. Para imprimir en un escritorio, es perfectamente adecuado. –