none
איך אפשר לסגור את הקובץ לאחר סיום ההדפסה שלו??? RRS feed

  • שאלה

  • יש לי כאן קוד שמדפיס קבצי DOCX למדפסת.

    אם אני רוצה להדפיס שוב את אותו הקובץ אני מקבל הודעה שהקובץ בשימוש.

    מה שאני רוצה לעשות אז פשוט לסגור את הקובץ לאחר השימוש לו. איך אפשר לעשות את זה???

    private void PrintWordDocument()
    {
         object objMissing = System.Reflection.Missing.Value;
         Microsoft.Office.Interop.Word.Application objWord;
         Microsoft.Office.Interop.Word.Document objDoc;
         objWord = new Microsoft.Office.Interop.Word.Application();
    
         object fileName = @"C:\demoDocFile.docx";
     
         objDoc = objWord.Documents.Open(ref fileName,
                ref objMissing, ref objMissing, ref objMissing, ref objMissing, ref objMissing,
                ref objMissing, ref objMissing, ref objMissing, ref objMissing, ref objMissing,
                ref objMissing, ref objMissing, ref objMissing, ref objMissing, ref objMissing);
    
         object copies = "1";
         object pages = "";
         object range = Microsoft.Office.Interop.Word.WdPrintOutRange.wdPrintAllDocument;
         object items = Microsoft.Office.Interop.Word.WdPrintOutItem.wdPrintDocumentContent;
         object pageType = Microsoft.Office.Interop.Word.WdPrintOutPages.wdPrintAllPages;
         object objTrue = true;
         object objFalse = false;
    
         objDoc.PrintOut(
                ref objTrue, ref objFalse, ref range, ref objMissing, ref objMissing, ref objMissing,
                ref items, ref copies, ref pages, ref pageType, ref objFalse, ref objTrue,
                ref objMissing, ref objFalse, ref objMissing, ref objMissing, ref objMissing, ref objMissing);
    }

    יום ראשון 19 אוגוסט 2012 16:56

תשובות

  • בדקתי וזה עובד אם אתה סוגר את האובייקטים.

            private void button1_Click(object sender, EventArgs e)
            {
                print();
                print();
            }
            private void print()
            {
                object objMissing = System.Reflection.Missing.Value;
                Microsoft.Office.Interop.Word.Application objWord;
                Microsoft.Office.Interop.Word.Document objDoc;
                objWord = new Microsoft.Office.Interop.Word.Application();
    
                object fileName = @"h:\Downloads\Telerik.OpenAccess.DSW\Documentation.docx";
    
                objDoc = objWord.Documents.Open(ref fileName,
                       ref objMissing, ref objMissing, ref objMissing, ref objMissing, ref objMissing,
                       ref objMissing, ref objMissing, ref objMissing, ref objMissing, ref objMissing,
                       ref objMissing, ref objMissing, ref objMissing, ref objMissing, ref objMissing);
    
                object copies = "1";
                object pages = "";
                object range = Microsoft.Office.Interop.Word.WdPrintOutRange.wdPrintAllDocument;
                object items = Microsoft.Office.Interop.Word.WdPrintOutItem.wdPrintDocumentContent;
                object pageType = Microsoft.Office.Interop.Word.WdPrintOutPages.wdPrintAllPages;
                object objTrue = true;
                object objFalse = false;
    
                objDoc.PrintOut(
                       ref objTrue, ref objFalse, ref range, ref objMissing, ref objMissing, ref objMissing,
                       ref items, ref copies, ref pages, ref pageType, ref objFalse, ref objTrue,
                       ref objMissing, ref objFalse, ref objMissing, ref objMissing, ref objMissing, ref objMissing);
    
                objDoc.Close();
                objWord.Quit();
                GC.Collect();
            }

    נבדק מול:

    .net4.5

    WORD 2013

    • הוצע כתשובה על-ידי tetitu יום רביעי 22 אוגוסט 2012 12:35
    • נערך על-ידי tetitu יום רביעי 22 אוגוסט 2012 12:37
    • סומן כתשובה על-ידי Eran Sharvit יום רביעי 22 אוגוסט 2012 13:52
    יום רביעי 22 אוגוסט 2012 12:34

כל התגובות

  • קראתי זריז על זה.

    ו....

    הפרמטר הראשון של

     objDoc.PrintOut(

    זה האם להדפיס ברקע.

    תנסה לשים שם TRUE

    ואז רק כאשר תסתיים ההדפסה הקוד אמור לחזור אליך ותוכל לסגור את ה WORD.

    העקרון הוא שאתה צריך לבטל את ה backgroud printing

    יום שני 20 אוגוסט 2012 05:56
  • בדקתי וזה עובד אם אתה סוגר את האובייקטים.

            private void button1_Click(object sender, EventArgs e)
            {
                print();
                print();
            }
            private void print()
            {
                object objMissing = System.Reflection.Missing.Value;
                Microsoft.Office.Interop.Word.Application objWord;
                Microsoft.Office.Interop.Word.Document objDoc;
                objWord = new Microsoft.Office.Interop.Word.Application();
    
                object fileName = @"h:\Downloads\Telerik.OpenAccess.DSW\Documentation.docx";
    
                objDoc = objWord.Documents.Open(ref fileName,
                       ref objMissing, ref objMissing, ref objMissing, ref objMissing, ref objMissing,
                       ref objMissing, ref objMissing, ref objMissing, ref objMissing, ref objMissing,
                       ref objMissing, ref objMissing, ref objMissing, ref objMissing, ref objMissing);
    
                object copies = "1";
                object pages = "";
                object range = Microsoft.Office.Interop.Word.WdPrintOutRange.wdPrintAllDocument;
                object items = Microsoft.Office.Interop.Word.WdPrintOutItem.wdPrintDocumentContent;
                object pageType = Microsoft.Office.Interop.Word.WdPrintOutPages.wdPrintAllPages;
                object objTrue = true;
                object objFalse = false;
    
                objDoc.PrintOut(
                       ref objTrue, ref objFalse, ref range, ref objMissing, ref objMissing, ref objMissing,
                       ref items, ref copies, ref pages, ref pageType, ref objFalse, ref objTrue,
                       ref objMissing, ref objFalse, ref objMissing, ref objMissing, ref objMissing, ref objMissing);
    
                objDoc.Close();
                objWord.Quit();
                GC.Collect();
            }

    נבדק מול:

    .net4.5

    WORD 2013

    • הוצע כתשובה על-ידי tetitu יום רביעי 22 אוגוסט 2012 12:35
    • נערך על-ידי tetitu יום רביעי 22 אוגוסט 2012 12:37
    • סומן כתשובה על-ידי Eran Sharvit יום רביעי 22 אוגוסט 2012 13:52
    יום רביעי 22 אוגוסט 2012 12:34