ऑब्जेक्ट AxAcroPDFLib.AxAcroPDF की LoadFile() विधि का उपयोग पहले से खुली हुई PDF फ़ाइलों को लोड करने के लिए नहीं किया जा सकता है


मैंने एक विंडोज़ डेस्कटॉप एप्लिकेशन (सी# में) बनाया है जहां मैं एक फॉर्म पर एक पीडीएफ-फ़ाइल प्रदर्शित करने के लिए एक्सएक्रोपीडीएफ नियंत्रण का उपयोग करता हूं जब उपयोगकर्ता पीडीएफ का पथ देता है और एक बटन पर क्लिक करता है। पीडीएफ-फ़ाइल एक नेटवर्क साझा फ़ाइल फ़ोल्डर में स्थित है जहां कई उपयोगकर्ता इसे एक्सेस कर सकते हैं।
(मैं ऑब्जेक्ट AxAcroPDFLib.AxAcroPDF की LoadFile() विधि का उपयोग करता हूं)

यह ठीक काम कर रहा है. लेकिन जब वही पीडीएफ फाइल जिसे मेरे एप्लिकेशन खोलने का प्रयास करते हैं वह पहले से ही एडोब रीडर का उपयोग करके खोली गई है तो मेरा एप्लिकेशन उसी पीडीएफ फाइल को नहीं खोल सकता है।

यदि मेरे इंस्टॉल किए गए पीसी में एडोब रीडर 7 है तो एप्लिकेशन त्रुटि संदेश को “System.ApplicationException Failed Loading PDF Template” के रूप में फेंक देता है और एप्लिकेशन फ्रीज हो जाता है।

और यदि पीसी पर चलने वाले एप्लिकेशन में एडोब रीडर एक्स स्थापित है तो कोई त्रुटि दिखाई नहीं देगी लेकिन लोडिंग स्क्रीन हमेशा के लिए दिखाई देगी।

लेकिन मेरे एप्लिकेशन का उपयोग करके एक ही पीडीएफ को दो या दो से अधिक पीसी में एक साथ खोलना सही काम करता है।

क्या कोई इस मुद्दे पर मेरी मदद कर सकता है?

समाधान 1

मुझे कोई उचित समाधान नहीं मिल सका जैसा कि मैं खोजने की उम्मीद कर रहा था। लेकिन प्रोग्राम क्रैश होने से बचने के लिए, मैंने पीडीएफ लोड करने से पहले एक चेक लगाया।

सी#
bool PDFAvailable = axAcroPDF1.LoadFile(PDFPath.ToString());

यदि बूलियन वैरिएबल ‘पीडीएफ उपलब्ध’ सही है तो मैं पीडीएफ को नीचे की तरह लोड करूंगा। अन्यथा एक उचित संदेश जाता है।

सी#
bool PDFAvailable = axAcroPDF1.LoadFile(PDFPath.ToString());
                       
                       if (PDFAvailable == true)
                       {
                           axAcroPDF1.LoadFile(PDFPath.ToString());
                           axAcroPDF1.setShowToolbar(false); //disable pdf toolbar.
                           axAcroPDF1.Enabled = true;
                           
                       }
                       else
                       {
                           MessageBox.Show("Selected PDF Template Is Locked By Another Application.", ""Test Application"", MessageBoxButtons.OK, MessageBoxIcon.Information);
                           
                       }

समाधान 2

मुझे इसमें एक समाधान मिला डाक

LoadFile() के बजाय हम नियंत्रण की “src” संपत्ति का उपयोग कर सकते हैं।

समाधान 4

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

फ़ाइल.कॉपी(iRec.Path, “https://www.codeproject.com/Questions/423157/C:\temp\a.pdf”,true);
धागा.नींद(500);
axAcroPDF1.src = “https://www.codeproject.com/Questions/423157/C:\temp\a.pdf”;

कोई अन्य समाधान?

コメント

タイトルとURLをコピーしました