2017-09-30 10 views
16

मैंने इस सवाल को पहले पूछा है, लेकिन मैंने कोई निश्चित जवाब नहीं देखा है, और निश्चित रूप से कोई समस्या नहीं है जो मेरी समस्या का समाधान करती है। मैंने FAXCOMEXLib के विपरीत फ़ैक्स (अर्द्ध स्वचालित रूप से) भेजने के लिए एक विंडोज सेवा बनाई है। अब तक, मेरी सेवा पाठ फ़ाइलों (.txt) भेजने में सफल रही है। लेकिन जब मैं पीडीएफ, जेपीजी, या टीआईएफ फाइल भेजने की कोशिश करता हूं, तो मुझे "ऑपरेशन विफल" त्रुटि मिलती है। इसलिए, मैंने उपयोगकर्ता की अनुमतियों के बारे में बहुत सी चर्चा देखी है कि सेवा चल रही है। मैंने कई अलग-अलग विकल्पों की कोशिश की है (स्थानीय सेवा, स्थानीय उपयोगकर्ता, व्यवस्थापक विशेषाधिकार वाले कस्टम उपयोगकर्ता, डेस्कटॉप के साथ बातचीत करने की सेवा की अनुमति देते हैं)। लेकिन कुछ भी एक फर्क नहीं पड़ता है। ऐसा लगता है कि सेवा में उचित ऐप को पीडीएफ, जेपीजी, या टीआईएफ फ़ाइल "प्रिंट" करने के लिए अनुमति नहीं है। लेकिन मैं केवल अनुमान लगा रहा हूं। क्या कोई विंडोज सेवा में फैक्सकोमेक्सलिब के माध्यम से फ़ैक्स भेजने में सफल रहा है? यहाँ मेरी कोड है कि फैक्स भेजता है:फैक्सकोमेक्सलिब का उपयोग कर विंडोज सेवा से पीडीएफ के लिए मैं फ़ैक्स कैसे भेज सकता हूं?

fileName = @"D:\temp\FaxTest.txt"; //THIS WORKS 
//fileName = @"D:\temp\FaxTest.pdf"; //Operation failed 
//fileName = @"D:\temp\FaxTest.tif"; //Operation failed 
faxDoc.Sender.Name = faxRec.From; 
faxDoc.Sender.Company = faxRec.From; 
faxDoc.Body = fileName; 
faxDoc.Subject = faxRec.ReferenceId; 
faxDoc.DocumentName = faxRec.ReferenceId; 
var to = "xxxxxxxxxx"; 
faxDoc.Recipients.Add(to, "Some Name"); 
var serverName = Environment.MachineName; 
string[] returnVal = faxDoc.Submit(serverName); 

मामले में आप सोच रहे हैं कि, हाँ, उन फ़ाइलों को उन नामों के साथ सर्वर पर मौजूद नहीं है, और वे वैध फ़ाइलें हैं (मैं Adobe Reader में उन्हें खोल सकते हैं और चित्र दर्शक)। और यह भी ठीक काम करता है अगर मैं इसे स्थानीय रूप से अपनी देव मशीन पर चलाता हूं। और निश्चित रूप से, उचित दर्शक (मेरी स्थानीय मशीन पर) भेजने से पहले पॉप अप करता है। मेरा अनुमान है कि किसी कारण से सेवा दर्शक को नहीं खोल सकती है। क्या कोई भी विंडोज सेवा में इस तरह पीडीएफ भेजने में सफल रहा है?

+0

यार फैक्सकोमेक्सलिब किस संस्करण का समर्थन करता है? https://www.interfax.net/en/help/supported_file_types => एडोब एक्रोबेट (वर 9) या चेकआउट https://stackoverflow.com/a/988359/336511। शायद आपको fxDoc पर पीडीएफ streem पास करने की जरूरत है। –

+0

FAXCOMLib.FaxServer fs = नया FAXCOMLib.FaxServer(); FAXCOMLib.FaxDoc fd = newFAXCOMLib.FaxDoc(); int परिणाम = 0; fs = new FAXCOMLib.FaxServer(); fs. कनेक्ट ("फ़ैक्ससेवर 1"); fd = (FAXCOMLib.FaxDoc) fs.CreateDocument ("c: \\ documenttofax.pdf"); fd.RecipientName = "जॉन डो"; fd.FaxNumber = "555-1234"; कोशिश { \t परिणाम = fd.Send(); } अंत में { \t fs.Disconnect(); } –

उत्तर

1

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

मैं यह कहकर इसे शुरू करना चाहता हूं कि फैक्सकोमेक्सलिब विंडोज़ कंसोल ऐप के लिए बनाया गया है, न कि विंडोज़ सेवा। आप इसे दस्तावेज़ीकरण में भी पढ़ सकते हैं। और मुझे लगता है कि यही कारण है कि हमें इसे काम करने में बहुत परेशानी थी।

हालांकि, हम इसे अधिक परीक्षण और त्रुटि के बाद (अंत में) काम करने में सक्षम थे। हमने जिन समस्याओं का सामना किया उनमें से अधिकांश एडोब रीडर में सेटिंग और अनुमतियों से संबंधित थे। हमने पाया कि एडोब रीडर पीडीएफ फ़ाइल को संसाधित करते समय दृश्यों के पीछे कई चीजें करने की कोशिश कर रहा था। और उन "चीजें" यह आवश्यक उपयोगकर्ता इंटरैक्शन करने की कोशिश कर रही थी (अलर्ट बॉक्स को दूर करना आदि)। विंडोज सेवा के तहत इसे चलाने पर, उस सेवा से कोई उपयोगकर्ता इंटरैक्शन नहीं होता है, जिसने हमारी प्रक्रिया को अनिश्चित काल तक लटका दिया और अंत में त्रुटि हो गई। लेकिन, हमने पाया कि उसके चारों ओर एक रास्ता है। यहाँ कैसे हमने कर दिया है:

यहाँ है कि हम उस काम करता है का उपयोग कर रहे कोड का स्निपेट है:

fileName = @"D:\temp\FaxTest.pdf"; 
faxDoc.Sender.Name = faxRec.From; 
faxDoc.Sender.Company = faxRec.From; 
faxDoc.Body = fileName; 
faxDoc.Subject = faxRec.ReferenceId; 
faxDoc.DocumentName = faxRec.ReferenceId; 
var to = "xxxxxxxxxx"; 
faxDoc.Recipients.Add(to, "Some Name"); 
var serverName = Environment.MachineName; 
var myProcesses = Process.GetProcessesByName("AcroRd32"); 
foreach (var myProcess in myProcesses) 
{ 
    if (DateTime.Now.Ticks - myProcess.StartTime.Ticks > TimeSpan.FromSeconds(30).Ticks) { 
     myProcess.Kill(); 
    } 
} 
string[] returnVal = faxDoc.Submit(serverName); 

इस से भी अधिक कोड हमारी सेवा में निश्चित रूप से, है। दूसरा कोड कॉलबैक इवेंट हैंडलर को भेजने/पूरा/असफल फैक्स इत्यादि की स्थिति को ट्रैक करने के लिए संभालता है, लेकिन यह कोड का "दिल" है जो वास्तव में "भेजना" शुरू करता है।

और यहां हमारे कॉन्फ़िगरेशन परिवर्तनों की एक सूची है जो हमने सर्वर पर बनाई है ताकि हमारी कस्टम विंडोज सेवा ठीक से डीडीओडी, रेंडर और पीडीएफ फाइलों को फैक्स के रूप में भेज सके। इनमें से कुछ कुछ उत्तरों में सूचीबद्ध हैं, लेकिन कुछ नहीं हैं, और मैं चाहता हूं कि यह एक पूर्ण उत्तर हो।

  1. सर्वर पर व्यवस्थापक के रूप में लॉग ऑन करें और सर्वर पर फ़ैक्स सर्वर भूमिका स्थापित करें।
  2. सुनिश्चित करें कि फ़ैक्स मॉडेम डिवाइस/कार्ड सर्वर पर ठीक से स्थापित है, और फ़ैक्स लाइन सक्रिय है। आप बस विंडोज फ़ैक्स उपयोगिता से टेक्स्ट फ़ाइलों के साथ कुछ परीक्षण फ़ैक्स भेजने का प्रयास कर सकते हैं। (हमारे मामले में हम समस्याओं में भाग गए क्योंकि हमें बाहरी, लंबी दूरी की रेखा पाने के लिए "9" डायल और एक गुप्त पास-कोड डायल करना पड़ा था)।
  3. सर्वर पर एडोब रीडर स्थापित करें।
  4. "विंडोज" चलाने के लिए अपने विंडोज सेवा के लिए सर्वर पर एक उपयोगकर्ता बनाएँ। हमने अपने उपयोगकर्ता "फैक्स सर्विस यूज़र" को बुलाया।
  5. कम से कम एक बार इस FaxServiceUser के रूप में सर्वर पर लॉग ऑन करें। लॉग इन करते समय, "एडोब पीडीएफ" डिवाइस को डिफ़ॉल्ट प्रिंटर के रूप में सेट करें।
  6. इस उपयोगकर्ता के रूप में लॉग इन करते समय, एडोब का उपयोग करके एक पीडीएफ फ़ाइल खोलें और EULA के माध्यम से क्लिक करें।
  7. हालांकि यह उपयोगकर्ता के रूप में लॉग इन किया है, और जब आप Adobe Reader खुला, बदलने ये सेटिंग हैं:
    • चेक किए जाने पर अन-चेक करें "मुझे संदेश दिखाएं जब मैं रीडर लांच" (के तहत "सामान्य")
    • स्टार्टअप चेक बॉक्स पर "संरक्षित मोड सक्षम करें" को अनचेक करें (यह केवल एक्रोबैट 10 पर लागू हो सकता है। एक्रोबैट 11 में, यह विकल्प सुरक्षा (उन्नत) में स्थानांतरित हो गया था और स्टार्टअप पर संरक्षित मोड सक्षम किया गया था। बस सुनिश्चित करें कि आप un - इस विकल्प को चेक करें)
    • "उन्नत सुरक्षा सक्षम करें" ("सुरक्षा (उन्नत)" के अंतर्गत अनदेखा करें - यह केवल एक्रोबैट 11 और उच्चतर पर लागू हो सकता है)
    • अद्यतनकर्ता विकल्प का चयन करें और स्वचालित डाउनलोड अक्षम करें और अद्यतन स्थापित करें।
    • अन-चेक करें "URL से लिंक बनाएँ" (के तहत "सामान्य")
    • अन-चेक करें "हाथ टूल लेख पढ़ने बनाओ" (के तहत "सामान्य")
    • अन-चेक करें "जब मैं शुभारंभ मुझे संदेश दिखाएं रीडर "(के तहत" सामान्य ")
    • अन-चेक करें" स्वचालित रूप से क्षेत्र मूल्यों की गणना "(के तहत" प्रपत्र ")
    • अन-चेक करें" शो फोकस आयत "(के तहत" प्रपत्र ")
    • अन-चेक करें" पाठ क्षेत्र अतिप्रवाह संकेतक दिखाएं "(के तहत" प्रपत्र ")
    • अन-चेक करें" एक्रोबेट जावास्क्रिप्ट सक्षम करें "(के तहत" जावास्क्रिप्ट ")
    • अन-चेक करें "दिखाएँ स्वागत संवाद" (के तहत "की समीक्षा")
    • अन-चेक करें "सर्वर दिखाएँ कनेक्शन संवाद चेतावनी जब फ़ाइल खोलने" (के तहत "की समीक्षा")
  8. यदि आवश्यक हो, यह परामर्श एडोब रीडर सेटिंग्स के साथ सहायता के लिए लिंक: http://kb.faxback.com/How+To+Configure+Adobe+XI+for+Use+with+NET+SatisFAXtion
  9. अपनी विंडोज सेवा के निर्माण, तैनाती और स्थापित करने के बाद, अपनी सेवा के गुणों को "आपके द्वारा बनाए गए उपयोगकर्ता" के रूप में चलाने के लिए बदलें (हमारे मामले में "FaxServiceUser")।
  10. फ़ोल्डरों यह// लिखने पढ़ने के लिए/से हटाने की क्या ज़रूरत में से किसी को है कि FaxServiceUser के लिए अनुमतियां जोड़ें।
  11. के बाद एडोब एक डेस्कटॉप अनुप्रयोग के रूप में चलाने के लिए मतलब है, (आप देख सकते हैं कि हम नमूना कोड में myProcess.Kill() समारोह में ऐसा किया) आपकी सेवा Adobe रीडर द्वारा प्रयुक्त स्मृति को रिहा करने में कुछ कोड जोड़ें।

और है कि यह करना चाहिए। यह थोड़ा बोझिल है, लेकिन मुझे उम्मीद है कि यह विंडोज सर्वर पर पीडीएफ फाइलों से फ़ैक्स भेजने के लिए आपकी कस्टम विंडोज सेवा के साथ एडोब रीडर को सेट अप करने का एक पूर्ण उदाहरण देता है। हम इसे कुछ महीनों के लिए अब कुछ मुद्दों के साथ कर रहे हैं। हमारा ग्राहक कम मात्रा में फ़ैक्स करता है, इसलिए मैं बात नहीं कर सकता कि यह फ़ैक्स की उच्च मात्रा के साथ कैसे काम करता है। इसलिए, यदि आप फ़ैक्स भेजने के लिए "मुक्त" तरीका ढूंढ रहे हैं, तो इंटरफ़ैक्स जैसे कुछ भुगतान किए बिना, यह कम से कम कम मात्रा के लिए एक व्यवहार्य विकल्प हो सकता है।

0

समस्या "AcroRd32" नाम की प्रक्रिया से संबंधित प्रतीत होती है, जो एक्रोबैट रीडर में फैक्स खोलता है और इसे भेजने से पहले इसे TIFF फ़ाइल में परिवर्तित करता है। यह प्रक्रिया स्मृति जारी नहीं कर रही है।

प्रक्रिया को रोकने के रूप में

Dim myProcesses() As Process Dim myProcess As Process 
' How to retrieve the program associat with pdf, when i only know the file extension ? 
myProcesses = Process.GetProcessesByName("AcroRd32") For Each myProcess In myProcesses 
If Date.Now.Ticks - myProcess.StartTime.Ticks > TimeSpan.FromSeconds(30).Ticks Then 
myProcess.Kill() 
End If 
Next 

मुझे आशा है कि यह उपयोगी है इस प्रकार की कोशिश करो।

+0

मुझे स्वीकार करना है, यह पहली बार मैंने इस समाधान के बारे में सुना है। मैं इसे एक शॉट दूंगा। मुझे पूछने दो, क्या ऐसा होता है क्योंकि एक और उपयोगकर्ता लॉग ऑन और एक्रोबैट रीडर का उपयोग कर रहा है? –

+0

विंडोज़ इसे भेजने से पहले दस्तावेज़ को एक टीआईएफएफ में परिवर्तित करता है। यह एसोसिएशन के आधार पर दस्तावेज़ खोलता है। इसलिए, एडोब शुरू हो गया है क्योंकि यह पीडीएफ के साथ जुड़ा हुआ है। मैं आपको दृढ़ता से सलाह देता हूं कि आप FAXCOMEXLib – Nawfel

+0

धन्यवाद @Nawfel के दस्तावेज़ों को पढ़ने के लिए, मुझे एहसास है कि यह एसोसिएशन द्वारा खुलता है। क्या आपको यह करने में कोई सफलता मिली है? –

3

यह the MSDN article में बहुत अच्छी तरह से प्रलेखित है। गैर-तुच्छ चीज़ जो होने की आवश्यकता है वह है कि कुछ सॉफ़्टवेयर को फ़ाइल सामग्री को प्रिंट करने योग्य टेक्स्ट में कनवर्ट करने की आवश्यकता है जिसे फ़ैक्स किया जा सकता है। का हवाला देते हुए:

दस्तावेजों है कि आप एक फैक्स निकाय के रूप में भेज सकते हैं के उदाहरण रहे हैं एक पाठ फ़ाइल (.txt), एक माइक्रोसॉफ्ट वर्ड दस्तावेज़ (.doc), या एक माइक्रोसॉफ़्ट एक्सेल स्प्रेडशीट (.xls)। जब आप किसी क्लाइंट कंप्यूटर से फ़ैक्स भेजते हैं, तो उस कंप्यूटर को उस कंप्यूटर से इंस्टॉल किया जाना चाहिए जो उस कंप्यूटर पर स्थापित है, और एप्लिकेशन को प्रिंटटो क्रिया का समर्थन करना है; अन्यथा, फैक्स विफल हो जाएगा।

तो एक सरल परीक्षण जो आप कर सकते हैं एक्सप्लोरर में फ़ाइल पर राइट-क्लिक करें और "प्रिंट" कमांड देखें। अगला प्रिंट प्रिंट क्रिया का प्रयोग करने के लिए फ़ाइल को प्रिंटर पर खींचें। यदि ये परीक्षण विफल हो जाते हैं तो यह काम नहीं करेगा और आपको एक ऐप इंस्टॉल करने की आवश्यकता है जो फ़ाइल को प्रिंट करने के बारे में जानता है।

किसी सेवा से ऐसा करने से प्रिंटिंग करने वाले ऐप पर अतिरिक्त आवश्यकताएं होती हैं। उनमें से बहुत सारे हैं जो सेवा में विशेष रूप से अच्छी तरह से व्यवहार नहीं करते हैं। विशेष रूप से जब आप प्रिंट करने का प्रयास करते हैं, तो माइक्रोसॉफ्ट दृढ़ता से किसी सेवा में ऐसा करने की सिफारिश करता है। कार्यालय ऐप्स देर से उदाहरण के लिए नहीं हैं, एमएसडीएन सलाह पहले ही कमजोर सॉस बनाते हैं।

मेरी मशीन पर, .tif एक्सटेंशन एक यूडब्ल्यूपी ऐप से जुड़ा हुआ है, जो किसी भी सेवा में काम नहीं करेगा। इन लोकप्रिय एक्सटेंशन को संभालने वाले ऐप्स की बड़ी संख्या को देखते हुए, अच्छी सलाह देना मुश्किल है, superuser.com पर जाने के लिए सबसे अच्छा है और विशिष्ट एक्सटेंशन, विंडोज संस्करण और ऐप जिसे आप उपयोग करना पसंद करते हैं। उपयोगकर्ता सत्र से ऐसा करना निश्चित रूप से कम से कम परेशानी है।

+0

फीडबैक @ हंस के लिए धन्यवाद। पीडीएफ फाइलों पर राइट-क्लिक करते समय एक "प्रिंट" विकल्प होता है। और जब मैं एक्सप्लोरर से इसे चुनता हूं, तो यह स्वचालित रूप से मुझे "एक एक्सपीएस फ़ाइल के रूप में सहेजने" के लिए संकेत देता है। मेरा विचार यह है कि मेरे पास "फैक्स प्रिंटर पर प्रिंट करें" के लिए एक विकल्प होना चाहिए, सही? क्या यह इंगित कर सकता है कि मेरा फैक्स प्रिंटर सही तरीके से स्थापित नहीं है? या शायद एडोब रीडर सीधे प्रिंटिंग का समर्थन नहीं करता है? –

+0

आपको बाकी पोस्ट को पढ़ने की जरूरत है। लेकिन एडोब रीडर, यूघ स्क्वायर, इस समस्या के कारण के लिए आगे नहीं देखो। आपने जो भुगतान किया है, वह आपको मिल गया है, और कम। –

+0

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

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

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