2008-09-28 5 views
16

से एक शब्द फ़ाइल बनाना, खोलना और प्रिंट करना मेरे पास तीन संबंधित प्रश्न हैं।सी ++

मैं सी ++ से नाम के साथ एक शब्द फ़ाइल बनाना चाहता हूं। मैं इस फ़ाइल में प्रिंटिंग कमांड भेजने में सक्षम होना चाहता हूं, ताकि फ़ाइल को दस्तावेज़ खोलने और इसे मैन्युअल रूप से करने के बिना फ़ाइल मुद्रित की जा रही हो और मैं दस्तावेज़ खोलने में सक्षम होना चाहता हूं। दस्तावेज़ खोलना सिर्फ उस शब्द को खोलना चाहिए जो फ़ाइल खोलता है।

उत्तर

0

मुझे माइक्रोसॉफ्ट ऑफिस के साथ एकीकृत करने का कोई अनुभव नहीं है, लेकिन मुझे लगता है कि इसके आसपास कुछ एपीआई हैं जिनका आप उपयोग कर सकते हैं।

हालांकि, यदि आप जो करना चाहते हैं वह फ़ॉर्मेटेड आउटपुट प्रिंट करने का एक प्राथमिक तरीका है और इसे उस फ़ाइल में निर्यात करना है जिसे Word में संभाला जा सकता है, तो आप आरटीएफ प्रारूप में देखना चाहेंगे। प्रारूप सीखने के लिए काफी सरल है, और RtfTextBox द्वारा समर्थित है (या यह RichTextBox है?), जिसमें कुछ मुद्रण क्षमता भी है। आरटीएफ प्रारूप एक ही प्रारूप है जैसा कि विंडोज वर्डपैड (write.exe) द्वारा उपयोग किया जाता है।

यह भी काम करने के लिए एमएस कार्यालय के आधार पर नहीं होने का लाभ है।

15

आप इस कार्य के लिए Office Automation का उपयोग कर सकते हैं। आपऔर http://support.microsoft.com/kb/238972 पर सी ++ के साथ Office Automation के बारे में अक्सर पूछे जाने वाले प्रश्नों के उत्तर पा सकते हैं।

ध्यान रखें कि सी ++ के साथ कार्यालय स्वचालन करने के लिए, आपको समझना होगा कि COM का उपयोग कैसे करें।

यहाँ ++ शब्द usign सी में विभिन्न कार्यों को करने के कुछ उदाहरण हैं:

इन नमूनों में से अधिकांश का उपयोग करके यह करने के लिए दिखाने एमएफसी, लेकिन वर्ड में हेरफेर करने के लिए COM का उपयोग करने की अवधारणाएं समान हैं, भले ही आप सीधे एटीएल या COM का उपयोग करें।

+0

यह पूछे जाने वाले प्रश्न का एक बड़ा जवाब है। मैं उन लोगों के लिए इंगित करना चाहता हूं जो इस प्रश्न से अन्य प्रश्नों से जुड़े हुए हैं, यह सर्वर-साइड उपयोग के लिए उपयुक्त नहीं है या जब कोई उपयोगकर्ता लॉग इन नहीं होता है। यह इस प्रश्न की स्थिति नहीं है, लेकिन अन्य प्रश्न भी हैं वह लिंक जो सर्वर-साइड उपयोग के बारे में थे और उन मामलों में Office Automation उपयुक्त नहीं है। डेस्कटॉप पर प्रिंटिंग के लिए, यह पूरी तरह उपयुक्त है। –

1

आप एमएस वर्ड (पृष्ठभूमि या अग्रभूमि में) खोलने के लिए स्वचालन का उपयोग कर सकते हैं और फिर आवश्यक आदेश भेज सकते हैं।

एक अच्छा प्रारंभिक जगह ज्ञान का आधार लेख Office Automation Using Visual C++

कुछ सी स्रोत कोड How To Use Visual C++ to Access DocumentProperties with Automation में उपलब्ध है (शीर्षक सी कहते हैं ++, लेकिन यह सादा सी है)

2

आप फ़ाइल है और बस चाहते हैं इसे प्रिंट करने के लिए, फिर रेमंड चेन के ब्लॉग पर this entry देखें। आप मुद्रण के लिए क्रिया "प्रिंट" का उपयोग कर सकते हैं।

विवरण के लिए shellexecute msdn entry देखें।

4

एक similar question के जवाब के रूप तैनात रूप में, मैं आपको सलाह this page को देखने के लिए जहां लेखक बताते हैं क्या समाधान वह एक सर्वर पर वर्ड दस्तावेज उत्पन्न करने के लिए, Msword उपलब्ध किया जा रहा बिना, स्वचालन या तीसरे पक्ष के पुस्तकालयों के बिना ले लिया।

start /min winword <filename> /q /n /f /mFilePrint /mFileExit 

इस उपयोगकर्ता एक प्रिंटर, कोई निर्दिष्ट करने के लिए अनुमति देता है:

0

इस मेरे समाधान निम्न आदेश का उपयोग करने के लिए है। प्रतियों, आदि

फ़ाइल नाम के साथ <filename> बदलें। यदि इसमें रिक्त स्थान हैं तो इसे दोहरे उद्धरण चिह्नों में संलग्न किया जाना चाहिए। (जैसे file.rtf, "A File.docx")

यह में के रूप में एक सिस्टम कॉल के भीतर रखा जा सकता है:

system("start /min winword <filename> /q /n /f /mFilePrint /mFileExit"); 

यहाँ कार्यों को संभालने है कि इस ताकि आप सभी को याद करने की जरूरत नहीं है के साथ एक सी ++ हेडर फ़ाइल है यदि आप इसे अक्सर उपयोग करते हैं तो स्विच:

/*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