resueltos - Crear, abrir e imprimir un archivo de palabra de C++
libreria fstream c++ (6)
Tengo tres preguntas relacionadas.
Quiero crear un archivo de palabras con un nombre de C ++. Deseo poder enviar el comando de impresión a este archivo, para que el archivo se imprima sin que el usuario tenga que abrir el documento y hacerlo manualmente, y quiero poder abrir el documento. Al abrir el documento solo debe abrir la palabra que luego abre el archivo.
Cuando tenga el archivo y solo quiera imprimirlo, mire esta entrada en el blog de Raymond Chen. Puede usar el verbo "imprimir" para imprimir.
Consulte la entrada shelleyecute msdn para más detalles.
No tengo experiencia en la integración con Microsoft Office, pero creo que hay algunas API que puedes usar para esto.
Sin embargo, si lo que desea lograr es una forma rudimentaria de imprimir una salida formateada y exportarla a un archivo que pueda manejarse en Word, es posible que desee examinar el formato RTF. El formato es bastante simple de aprender, y es compatible con RtfTextBox (¿o es RichTextBox?), Que también tiene algunas capacidades de impresión. El formato rtf es el mismo formato que usa Windows Wordpad (write.exe).
Esto también tiene el beneficio de no depender de MS Office para poder funcionar.
Puede usar Office Automation para esta tarea. Puede encontrar respuestas a las preguntas frecuentes sobre Automatización de Office con C ++ en http://support.microsoft.com/kb/196776 y http://support.microsoft.com/kb/238972 .
Tenga en cuenta que para realizar Office Automation con C ++, debe comprender cómo usar COM.
Aquí hay algunos ejemplos de cómo realizar varias tareas en la palabra usar C ++:
- http://support.microsoft.com/kb/220911/en-us
- http://support.microsoft.com/kb/238393/en-us
- http://support.microsoft.com/kb/238611/en-us
La mayoría de estos ejemplos muestran cómo hacerlo usando MFC, pero los conceptos de usar COM para manipular Word son los mismos, incluso si usa ATL o COM directamente.
Puede usar la automatización para abrir MS Word (en segundo plano o en primer plano) y luego enviar los comandos necesarios.
Un buen punto de partida es el artículo de la base de conocimiento Automatización de Office que usa Visual C ++
Cierto código fuente C está disponible en Cómo usar Visual C ++ para acceder a DocumentProperties con automatización (el título dice C ++, pero es simple C)
Mi solución a esto es usar el siguiente comando:
start /min winword <filename> /q /n /f /mFilePrint /mFileExit
Esto le 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í hay un archivo de encabezado C ++ con funciones que manejan esto para que no tenga que recordar todos los switches 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
Tal como se publicó como respuesta a una pregunta similar , le aconsejo que mire esta página donde el autor explica qué solución tomó para generar documentos de Word en un servidor, sin que MsWord esté disponible, sin automatización ni bibliotecas de terceros.