2009-09-10 14 views
13

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

आमतौर पर, इसके लिए प्रसंस्करण का समय वास्तव में तेज़ है।

हालांकि, हमें एक टेम्पलेट के भीतर एक छवि एम्बेड करने की आवश्यकता है। हम वर्ड के "सम्मिलित/चित्र/फ़ाइल से ..." कार्यक्षमता का उपयोग कर जेपीईजी छवियों के रूप में इन्हें एम्बेड कर रहे हैं। लेकिन हमने पाया है कि परिणामस्वरूप आरटीएफ फ़ाइल का आकार छवि पर बड़े पैमाने पर निर्भर है।

उदाहरण के लिए, मैंने एक 20k जेपीईजी लोगो डाला है (जो मूल रूप से कुछ पाठ के साथ एक ठोस पृष्ठभूमि है)। आरटीएफ फ़ाइल आकार में लगभग 3 9 0k (छवि के बिना) से 510k (छवि के साथ) में आकार में वृद्धि हुई।

फिर हमने एक स्क्रीनशॉट युक्त एक जेपीईजी डाला, यानी छवि में टेक्स्ट, एकाधिक रंग इत्यादि शामिल हैं। जेपीईजी लगभग 150k है। इस छवि का उपयोग करते हुए, आरटीएफ फ़ाइल आकार में 390k से 3.5 एमबी तक बढ़ी है।

तो एन्कोडिंग जो वर्ड आरटीएफ में छवियों को संग्रहीत करने के लिए उपयोग करता है वह रैखिक रूप से प्रदर्शन नहीं करता है। मुझे लगता है कि यह जेपीईजी छवि में क्या निर्भर है पर निर्भर है।

मुझे आरटीएफ टेम्पलेट्स का आकार कम से कम रखने की आवश्यकता है ताकि हमारे फाइल प्रसंस्करण के समय कम से कम रखें।

  • क्या किसी के पास एम्बेडेड छवियों के साथ आरटीएफ फाइलों के आकार को कम करने के बारे में कोई विचार है?
  • क्या वर्ड का उपयोग करने वाले एन्कोडिंग को नियंत्रित करने का कोई तरीका है? मैं कहीं भी कोई विकल्प नहीं देख सकता।
  • क्या किसी को पता है कि किस प्रकार का बाइनरी एन्कोडिंग शब्द/आरटीएफ उपयोग करता है?

अग्रिम धन्यवाद।

+2

नहीं कि मेरे पास कोई जवाब है, लेकिन यह लगभग निश्चित रूप से है क्योंकि इसे जेपीईजी जैसे संपीड़ित प्रतिनिधित्व के बजाय एक असम्पीडित बिटमैप के रूप में एम्बेड किया जा रहा है। –

उत्तर

5

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

संपादित करें आरटीएफ को एक विकल्प संपीड़ित कर रहा है? ज़िप/रार का उपयोग करके, आपको अपनी फ़ाइल का आकार वापस मिल जाएगा, लेकिन आपको स्पष्ट रूप से असम्पीडित करना होगा। ऐसे उपकरण होने चाहिए जो आरटीएफ संपीड़न करेंगे, लेकिन मैंने कभी उनका उपयोग नहीं किया है।

+0

धन्यवाद। ज़िपिंग मदद नहीं करेगा - मुझे अभी भी फ़ाइल को संसाधित करने के लिए अनजिप करने की आवश्यकता होगी। यह फाइल स्टोरेज आकार नहीं है जो मेरी समस्या है - यह आरटीएफ को संसाधित करने का समय है। मुझे लिंकिंग के बारे में समझ में नहीं आता - मुझे शायद वर्ड कौशल में कमी हो रही है ... क्या वर्ड को हाइपरलिंक को यूआरएल में प्राप्त करना संभव है और दस्तावेज़ में उस यूआरएल की सामग्री प्रदर्शित करना संभव है? मैं आसानी से एक यूआरएल के माध्यम से अपनी छवियों को उपलब्ध कर सकते हैं। जब तक दस्तावेज़ में पाठक को पाठक में दिखाई देता है और पाठक को छवि प्राप्त करने के लिए कुछ भी करने की ज़रूरत नहीं होती है, तो मैं खुश रहूंगा (यानी मैं नहीं चाहता कि मेरे उपयोगकर्ताओं को एक लिंक पर क्लिक करना पड़े) –

+0

एक हाइपरलिंक जोड़ना या तो शब्द या वीबीए के भीतर से आसान है, लेकिन खेद है कि मुझे नहीं पता कि छवि आरटीएफ दस्तावेज़ के अंदर कैसे दिखाई दे सकती है, लेकिन अंदर डब्लूएमएफ की एक प्रति नहीं है।उदाहरण के लिए, यदि आपके पास गैर-सफेद पृष्ठभूमि हैं, तो स्क्रीन शॉट्स की अपेक्षा कहीं अधिक बड़ी होती है। आप अपनी छवियों को संपादित करने और उन्हें बीएमपी के रूप में सहेजने पर विचार कर सकते हैं। बीएमपी प्रारूप आपको एक विचार देगा कि डब्लूएमएफ कितना बड़ा होगा। 16 बिट छवि के रूप में आप कितनी रंगीन जानकारी सहेजते हैं? – DaveParillo

+0

क्षमा करें - मेरा मतलब 16 रंगीन छवि है। बस मेरी मॉनीटर का डंप बचाया - मूल रूप से 24 बिट 3.5 एम छवि। 16 रंग और इसके 641 के रूप में सहेजा गया। छवि कुछ नुकसान लेती है, लेकिन यह अभी भी 'सेवा योग्य' है – DaveParillo

15

यहाँ सबसे अच्छा समाधान है

http://support.microsoft.com/kb/224663

अंश:

लक्षण

जब आप एक माइक्रोसॉफ्ट वर्ड दस्तावेज़ है कि एक EMF शामिल बचाने के लिए, PNG, GIF, या एक अलग फ़ाइल प्रारूप के रूप में जेपीईजी ग्राफिक (उदाहरण के लिए, शब्द 6.0/95 (.doc) या रिच टेक्स्ट फॉर्मेट ( .rtf)), दस्तावेज़ का फ़ाइल आकार नाटकीय रूप से बढ़ सकता है।

उदाहरण के लिए

, किसी Microsoft Word 2000 दस्तावेज़ है कि एक Word 2000 दस्तावेज़ के रूप में सहेजा गया है 45,568 बाइट्स (44.5KB) की एक फ़ाइल आकार हो सकता है एक JPEG ग्राफिक शामिल हैं। हालांकि, जब आप इस फ़ाइल को Word 6.0/95 (.doc) या रिच टेक्स्ट फॉर्मेट ( .rtf) के रूप में सहेजते हैं, तो फ़ाइल का आकार 1,289,728 बाइट्स (1.22 एमबी) तक बढ़ सकता है।

कारण

यह कार्यक्षमता माइक्रोसॉफ्ट वर्ड में डिजाइन कर रहा है। यदि ईएमएफ, एक पीएनजी, एक जीआईएफ, या एक जेपीईजी ग्राफ़िक शब्द दस्तावेज़ में डाला जाता है, जब दस्तावेज़ सहेजा जाता है, तो ग्राफ़िक की दो प्रतियां दस्तावेज़ में सहेजी जाती हैं। ग्राफिक्स लागू ईएमएफ, पीएनजी, जीआईएफ, या जेपीईजी प्रारूप में सहेजे गए हैं और उन्हें डब्लूएमएफ (विंडोज मेटाफाइल) प्रारूप में भी परिवर्तित कर दिया गया है।

संकल्प

चेतावनी आप रजिस्ट्री संपादक को ग़लत तरीके से उपयोग करते हैं, आप गंभीर समस्याओं कि आपके ऑपरेटिंग सिस्टम को पुनर्स्थापित करने के लिए कह सकता है हो सकता है। माइक्रोसॉफ्ट गारंटी नहीं दे सकता है कि आप रजिस्ट्री संपादक गलत तरीके से उपयोग करने के परिणामस्वरूप समस्याएं हल कर सकते हैं। रजिस्ट्री संपादक का उपयोग अपने स्वयं के जोखिम पर करें।

दस्तावेज़ में, ग्राफिक की दो प्रतियां बचत से पद को रोकने के लिए और दस्तावेज़ के फ़ाइल आकार को कम करने, माइक्रोसॉफ्ट विंडोज रजिस्ट्री में ExportPictureWithMetafile = 0 स्ट्रिंग मान जोड़ें।

+0

लिंक किया गया पृष्ठ इस बारे में है कि शब्द छवि (मूल फ़ाइल और असम्पीडित संस्करण) की दो प्रतियां कैसे सहेजता है और एक रजिस्ट्री परिवर्तन देता है जो इसे केवल मूल फ़ाइल को सहेजने के लिए कहता है। दिलचस्प – codeulike

+0

मुझे लगता है कि यह उत्तर के रूप में चिह्नित एक से बेहतर जवाब है। – bfhd

+0

मुझे नहीं लगता कि कोई भी जानता है कि वर्डपैड के बराबर कैसे पूरा किया जाए? मैंने 'निर्यात PictureWithMetafile = 0' स्ट्रिंग मान को 'HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Applets \ Wordpad \ Options' में जोड़ने का प्रयास किया लेकिन इसका कोई स्पष्ट प्रभाव नहीं पड़ा। – ulatekh

-1

हां, अनावश्यक पात्रों को हटाकर। और ऐसा करने के लिए आपको उन्हें अपनी स्ट्रीम में वापस डालना होगा। उदाहरण के लिए यदि आपके पास एक पंक्ति में बीस से अधिक वर्ण हैं, तो आप अपनी स्ट्रीम में f [20] के साथ प्रतिस्थापित कर सकते हैं। यह एक शुरुआत है।

- भाग्य का सबसे अच्छा।

1

हमने काम पर एक समान परियोजना की है। केवल हम उस "सम्मिलित/चित्र/फ़ाइल से ..." कार्यक्षमता का उपयोग नहीं कर रहे हैं। हमारे टेम्पलेट में एक टैग है [फोटो], जैसा कि मैंने मान लिया है कि आपका खुद भी करता है। जब हम दस्तावेज़ को संसाधित करते हैं तो हम छवियों को प्रदर्शित करने के लिए आवश्यक आरटीएफ कोड के साथ टैग को प्रतिस्थापित करते हैं। हम उन्हें एक टेबल के भीतर डाल रहे हैं और हम प्रत्येक पंक्ति पर दो छवियां प्रदर्शित कर रहे हैं, साथ ही शीर्षक के लिए शीर्ष पर एक पंक्ति प्रदर्शित कर रहे हैं।

तो, आप अपने टेम्पलेट में एक टैग [फोटो] डाल सकते हैं। फिर आप आरटीएफ कोड के साथ टैग को प्रतिस्थापित करते हैं। आप वेब पर इन कोडों के कुछ अच्छे संदर्भ पा सकते हैं। उदाहरण के लिए। here

अब, मेरे कोड इस तरह दिखता है:

\ par {\ rtf1 \ एएनएसआई \ deff0 {\ trowd \ cellx8810 {शीर्षक} \ intbl \ qc \ सेल \ पंक्ति} { \ trowd \ cellx4405 \ cellx8810 {\ pict \ jpegblip \ picwgoal4000 \ pichgoal3000 \ piccropl-50 \ piccropr-50 \ piccropt-50 \ piccropb-50 \ हेक्स हेक्साडेसिमल में बाइट्स की एक सरणी के रूप में आपकी छवि} \ intbl \ cell {\ pict \ jpegblip \ picwgoal4000 \ pichgoal3000 \ piccropl-50 \ piccropr-50 \ piccropt-50 \ piccropb-50 \ हेक्स आपका अन्य छवि} \ intbl \ सेल \ पंक्ति}

यदि आप एक बाइट सरणी में अपनी छवि को मिलते हैं तो आप हेक्स कोड प्राप्त करने के BitConverter.ToString (सरणी) का उपयोग कर सकते हैं। केवल आपको "" द्वारा डैश को प्रतिस्थापित करने की आवश्यकता होगी;

हमारी फाइलें "सामान्य" आरटीएफ की जगह के 1/10 वें स्थान पर ले जाएंगी। अगर हम नोटपैड ++ जैसे संपादक के साथ दस्तावेज़ का कोड खोलते हैं, तो हम आरटीएफ कोड देख सकते हैं, लेकिन अगर हम दस्तावेज़ खोलते हैं और इसे आरटीएफ (अपना नाम बदलते हैं) के रूप में सहेजते हैं, तो यह 1.5 एमबी से 50 एमबी तक जाएगा !! मुझे लगता है कि डेवपारिलो के जवाब का अनुमान है: मैं केवल एक बार प्रत्येक छवि लिख रहा हूं।

उम्मीद है कि यह मदद करता है। चीयर्स साथी

0

Swartbees उत्तर ने मेरे लिए पूरी तरह से काम किया। मैंने पहली बार जीआईआईएमपी का उपयोग करके छवि गुणवत्ता को "0" तक घटा दिया। जेपीजी कार्यक्षमता के रूप में सहेजें। ऊपर Swartbees द्वारा सुझाए गए माइक्रोसॉफ्ट समाधान का पालन करने के बाद मैंने तस्वीर में फ़ाइल को फिर से डाला और आकार में वृद्धि नग्न्य 22 9 के लिए 279k (2 9, 000 केबी के विपरीत) थी।

आपके सुझाव लोगों के लिए धन्यवाद।

1

प्रारंभ में, ध्यान रखें कि प्रत्येक बाइट 2 वर्णों (दो बाइट्स) का उपयोग करके संग्रहीत किया जाता है, इसका मतलब है कि कम से कम वृद्धि मूल तस्वीर का डबल आकार है।

अन्य चीजों की आपको आवश्यकता है कि वर्ड और वर्ड पैड एक ही छवि के साथ-साथ अन्य फ़ील्ड (आरटीएफ को उनके बिना प्रदर्शित किया जा सकता है) के अलग-अलग (स्वाद या प्रारूप) डालें।

यहाँ (https://joseluisbz.wordpress.com/2011/07/16/subiendo-imagenes-png-y-jpg-y-archivos-a-mysql-con-php-y-jsp-y-mostrarlos-en-rtf-usando-clases/)

अब, हो सकता है आप एक और (http://joseluisbz.wordpress.com/2013/07/26/exploring-a-wmf-file-0x000900/) के साथ मूल छवि को बदलने की आवश्यकता होगी कुछ आरटीएफ (https://joseluisbz.wordpress.com/2011/06/22/script-de-clases-rtf-para-jsp-y-php/) में चित्रों को डालने के लिए इस्तेमाल किया स्क्रिप्ट नहीं, और उपयोग की एक उदाहरण हैं।

संबंधित मुद्दे