سؤال

أحاول حاليا طباعة مستند من WPF. أنا أستخدم متصفح الويب لأنه يحتوي على عنصر تحكم Active X الذي يحتوي على البرنامج المساعد Autodesk الذي أحتاج إلى عرض المستند.

أنا أدرك أن WPF لا يدعم مستعرض الويب مباشرة لكنني قمت فقط بدمج مكتبة نماذج Windows لهذا الغرض. لقد تمكنت من الحصول على رمز قيد التشغيل وحتى الطباعة، ولكن المستند الذي يطبع فارغا.

لست متأكدا مما إذا كان يمكن أن يكون تعارضا بين مكتبة نماذج Windows و WPF؛ أنا أتال إلى المستند والطباعة فقط بمجرد تحميلها دون أخطاء ألقيت.

إليك الرمز الذي أستخدمه:

    private void btnPrint_Click(object sender, RoutedEventArgs e)
    {
        System.Windows.Forms.WebBrowser w = new System.Windows.Forms.WebBrowser();

        Uri uri = new Uri("C:\\BOS-BD-4518-000.dwg.dwf");
        w.Navigate(uri);

        w.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(w_DocumentCompleted);
    }

    void w_DocumentCompleted(object sender, System.Windows.Forms.WebBrowserDocumentCompletedEventArgs e)
    {
        System.Windows.Forms.WebBrowser w = (System.Windows.Forms.WebBrowser)sender;

        w.Print();
    }

يمكن أن تكون إحدى العقبة المحتملة أن عنصر التحكم X النشط لا يسمح بتحميله، هل يعرف أحد كيفية إجبار التحكم في التحكم فيه.

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

شكرا مقدما، Sumguy

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

المحلول

ليس حقا إجابة من نوع ما ولكن حل إذا كان أي شخص يرغب في طباعة ملف .dwf. لا، استخدم النموذج الجديد .dwfx. هذا هو نوع الملف الجديد Autodesk يتحول أيضا، وفي الواقع شكل من أشكال XPS التي تجعل الأمور سهلة للغاية. يمكنك تحميلها في متصفح الويب دون الحاجة إلى X Active X أو (هذه هي الطريقة الأفضل) استخدم مكتبات XPS في Visual Studio لأنه يمكن تحميله ببساطة ببساطة في عارض XPS.

الرمز الذي استخدمته في النهاية لطباعة الملف المروع أدناه:

private PrintQueue printQueue;

PrintDialog pDialog = new PrintDialog();
pDialog.PageRangeSelection = PageRangeSelection.AllPages;
pDialog.UserPageRangeEnabled = true;

if (pDialog.ShowDialog() == true)
    PrintSystemJobInfo xpsPrintJob = printQueue.AddJob(v.FileName, v.FilePath, false);

ما مدى سهولة ذلك ؟؟؟ هناك الكثير من الطرق الأخرى للقيام بذلك باستخدام XPS. يمكنك فقط استخدام ملف DWFX كوثيقة XPS

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