سؤال

أنا أعمل على مشروع الآن أن يتضمن تلقي رسالة من تطبيق آخر ، تنسيق محتويات الرسالة و إرساله إلى الطابعة.تكنولوجيا الخيار C# خدمة windows.الإخراج يمكن أن يسمى تقريرا ، على ما أظن ، ولكن التقارير محرك ليست ضرورية.بسيطة النموذجيه المحرك ، مثل StringTemplate ، أو حتى XSLT إخراج HTML سيكون على ما يرام.المشكلة أواجه هو إيجاد وسيلة مجانية على طباعة هذا النوع من الإخراج من الخدمة.لأنه يبدو أنه سوف يعمل ، أنا أعمل على النموذج باستخدام مايكروسوفت RDLC ونشر تقريرا المحلي ثم جعلها كصورة إلى الذاكرة تيار, والتي سوف ثم طباعة.المسائل التي هي:

  • متعدد الصفحات الطباعة سوف تكون صداعا كبيرا.
  • لا يزال لديك لاستخدام PrintDocument لطباعة الذاكرة ستريم الذي هو غير معتمد في خدمة Windows (على الرغم من أنه قد عمل لم نصل إلى هذا الحد مع النموذج بعد)
  • إذا كانت البيانات القادمة عبر التغييرات, يجب تغيير البيانات أو فئة أن البيانات يتم إلغاء تسلسل في.سيئة سيئة سيئة.

وقد أي شخص أن يفعل أي شيء عن بعد مثل هذا ؟ أي نصيحة ؟ أنا سجلت بالفعل سؤال حول طباعة HTML دون إدخال المستخدم بعد إهدار حوالي 3 أيام على ذلك ، لقد جئت إلى استنتاج مفاده أنه لا يمكن أن يتم على الأقل ليس مع أي متاحة بحرية أداة.

كل مساعدة تقدير.

تحرير:نحن في الإصدار 2.0 .NET framework.

هل كانت مفيدة؟

المحلول

ثق بي, سوف تنفق المزيد من المال في محاولة البحث/إيجاد حل لهذه بالمقارنة مع شراء طرف ثالث المكونات.لا إعادة اختراع العجلة والذهاب دفع الحل.

الطباعة هي مشكلة معقدة و أنا أحب أن أرى اليوم الذي أفضل إطار دعم يضاف لهذا.

نصائح أخرى

الطباعة من خدمة Windows مؤلمة حقا.يبدو أن العمل...في بعض الأحيان...ولكن في النهاية craches أو يطرح استثناء من وقت لآخر دون أي سبب واضح.انها ميؤوس منها حقا.رسميا, حتى غير معتمد, دون أي تفسير أو أي اقتراح حل بديل.

مؤخرا, لقد كنت تواجه مشكلة بعد العديد من التجارب الناجحة و التجريب, لقد جاء أخيرا مع اثنين من حلول ناجعة:

  • الكتابة الخاصة بك الطباعة DLL باستخدام Win32 API (في C/C++ على سبيل المثال) ، ثم استخدامه من الخدمة مع P/استدعاء (يعمل بشكل جيد)
  • الكتابة الخاصة بك الطباعة مكون COM+ ثم يستخدمها من الخدمة الخاص بك.وقد اخترت هذا الحل مع النجاح في الآونة الأخيرة (ولكن كان الطرف الثالث مكون COM+ لا تملك الخطية) وهو يعمل تماما على ما يرام أيضا.

لقد فعلت ذلك.انها الألم في A*s.المشكلة هي أن الطباعة يتطلب محرك GDI أن يكون في المكان الذي عادة ما يعني أن يكون لديك سطح المكتب ، الأحمال فقط عندما كنت تسجيل الدخول.إذا كنت تحاول أن تفعل هذا من خدمة على ملقم ، فإنك عادة لم تقم بتسجيل الدخول.

أولا حتى لا يمكنك تشغيل الخدمة العادية المستخدم, ولكن بدلا من ذلك المستخدم الحقيقي الذي التفاعلية تسجيل الدخول الحقوق.ثم لديك قرص خدمة إدخالات التسجيل (أنسى كيف في لحظة, قد تجد الكود الذي يمكنني القيام به هذه الليلة إذا كنت مهتما حقا).أخيرا, يجب عليك أن تصلي.

أكبر الخاص بك على المدى الطويل وسوف يكون الصداع مع طباعة السائقين.إذا كنت تقوم بتشغيل الخدمة بدون تسجيل الدخول المستخدم طباعة بعض السائقين مثل أن يطفو على السطح الحوارات من وقت لآخر.ماذا يحدث عندما تكون الطابعة من الحبر ؟ أو من الورق ؟ السائق قد يطفو على السطح مربع حوار لن ينظر إليها ، و تصمد قائمة انتظار الطابعة لأن لا أحد بتسجيل الدخول!

الطباعة من الخدمة هو فكرة سيئة.شبكة الطابعات المتصلة "لكل مستخدم".يمكنك وضع علامة على خدمة تشغيل مستخدم معين ، ولكن أود أن نعتبر أن سوء ممارسة أمنية.قد تكون قادرا على الاتصال إلى طابعة محلية, ولكن كنت لا تزال تتردد قبل الذهاب في هذا الطريق.

الخيار الأفضل هو أن يكون خدمة تخزين البيانات و المستخدم-أطلقت التطبيق القيام الطباعة عن طريق طرح خدمة البيانات.أو موقع مشترك على أن يتم تخزين البيانات مثل قاعدة البيانات الخاصة بنا.

إذا كنت في حاجة إلى أن البيانات المطبوعة العادية فترات الإعداد مهمة الحدث من خلال "برنامج جدولة المهام".إطلاق عملية من الخدمة تتطلب معرفة اسم المستخدم وكلمة المرور مرة أخرى سيئة الأمن الممارسة.

أما بالنسبة الطباعة نفسها ، استخدام أداة طرف ثالث لإنشاء التقرير سوف يكون أسهل.

للإجابة على السؤال الأول, هذا يمكن أن يكون إلى حد ما على التوالي إلى الأمام اعتمادا على البيانات.لدينا مجموعة متنوعة من الخدمات المستندة إلى التطبيقات التي تفعل بالضبط ما كنت طالبا.عادة ما إعراب واردة الملف والتفاف الخاصة بنا بوستسكريبت أو PCL حوله.إذا كنت تخطيط بسيط إلى حد ما ، ثم هناك بعض أساسية جدا PCL رموز يمكنك لف مع توفير الخط/طباعة رمية تريد (سأكون أكثر من سعيدة أن أقدم لكم بعض الإرشادات هنا حاليا).

واحدة لديك ملف جاهز طباعة يمكنك إرسالها إلى UNC الطابعة التي يتم تبادلها مباشرة إلى الطابعة المثبتة محليا ، أو حتى إلى IP الجهاز (الخام أو LPR نوع البيانات).

ولكن ، إذا كنت تسير أسفل PDF مسار أبسط طريقة لإرسال PDF الإخراج إلى الطابعة التي تدعم طباعة ملفات PDF المباشرة (تفعل الكثير الآن).في هذه الحالة يمكنك فقط إرسال PDF إلى الجهاز بعيدا فإنه يطبع.

الخيار الآخر هو إطلاق غوستسكريبت والتي يجب أن تكون حرة لتلبية الاحتياجات الخاصة بك (التحقق من الترخيص كما لديهم عدد قليل من نسخة مختلفة بعض غنو بعض GPL.... الخ) و إما استخدام بنيت في وظيفة الطباعة أو ببساطة تحويل إلى بوستسكريبت وإرسالها إلى الجهاز.لقد استعملت غوستسكريبت مرات عديدة في خدمة التطبيقات ولكن لست مروحة ضخمة كما أنك سوف تكون أساسا القصف و تنفيذ سطر الأوامر التطبيق للقيام بهذا التحويل.أن يقال, إنه مستقر التطبيق التي لا تميل إلى فشل بأمان

قد لا يكون هذا ما تبحث عنه, ولكن إذا كنت بحاجة إلى القيام بذلك بسرعة&القذرة ، وأود أن:

  1. إنشاء منفصلة تطبيق WPF (حتى أتمكن من استخدام المدمج في التعامل مع الوثائق)
  2. تعطي الخدمة القدرة على التفاعل مع سطح المكتب (لاحظ أنه لم يكن في الحقيقة يجب أن تظهر أي شيء على سطح المكتب أو تسجيل الدخول لهذا العمل)
  3. لديهم خدمة تشغيل التطبيق ، و تعطيه بيانات الطباعة.

ربما يمكن أيضا الوالج هذه الطباعة من متصفح ويب التي تقوم بتشغيل الخدمة (على الرغم من أنني أنصح بناء الخاصة بك شل أي بدلا من استخدام المتصفح الكامل).

أكثر تفصيلا (مجانا أيضا) حل أفضل رهان هو على الارجح يدويا تنسيق المستند نفسك (باستخدام+ GDI للقيام تخطيط بالنسبة لك).وهذا هو مملة ، خطأ عرضة مضيعة للوقت ، والنفايات الكثير من الورق خلال التنمية ، ولكن أيضا يعطي لك أكثر سيطرة على ما يحدث إلى الطابعة.

إذا كنت تستطيع إخراج ما بعد النصي بعض الطابعات طباعة أي شيء أن يحصل FTPed معين الدليل عليها.

استخدمنا هذه للحصول على الماضي الطباعة الاعتمادات التي جامعتنا يتعرض لنا, ولكن إذا كان لديك خدمة النواتج ps ثم يمكنك فقط ftp ps الملف إلى الطابعة.

نحن نستخدم DevExpress' XtraReports الطباعة من الخدمة من دون أي مشاكل.تقرير نموذج مماثل من أشكال النوافذ ، لذلك يمكن إدراج حيوي عناصر النص ومن ثم إصدار أمر الطباعة.

أعتقد أننا ذاهبون إلى الذهاب الطرف الثالث الطريق.أنا مثل XSL -> HTML -> PDF -> الطابعة تدفق...Winnovative هو HTML إلى PDF تبدو جيدة بالنسبة للجزء الأول, ولكن أنا على التوالي في كتلة العثور حسن PDF طباعة الحل...أي اقتراحات ؟ ومن الناحية المثالية سيكون على المطور الاساس وليس على نشر وقت التشغيل أساس.

في الإجابة على سؤالك حول طباعة ملفات PDF ، لم أجد حلا.لقد كانت "شل" جي إلى أدوبي التي لا يمكن الاعتماد عليها ويحتاج المستخدم إلى تسجيل الدخول في كل مرة.لإصلاح هذه المشكلة ، طلبت أن الملفات نقوم بمعالجة (الفواتير) يكون مهيأ كما multi-page Tiff ملفات بدلا من ذلك الذي يمكن تقسيم وبصرف النظر المطبوعة باستخدام الأصلي .صافي وظائف الطباعة.أدوبي موقف يبدو أن "الحصول على المستخدم لعرض الملف في برنامج Adobe Reader ويمكن انقر فوق طباعة".عديمة الفائدة.

أنا لا تزال حريصة على العثور على وسيلة جيدة لإنتاج نوعية التقارير التي يمكن أن يكون الناتج من ملقم ويب...

الطباعة باستخدام نظام.الرسم.الطباعة غير معتمد من قبل مايكروسوفت ، كما في يان Trevin رد.ومع ذلك ، قد تكون قادرا على استخدام جديدة ، WPF المستندة إلى نظام.الطباعة (أنا أعتقد)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top