проблема печати в Power Point с использованием C # - PullRequest
0 голосов
/ 16 июля 2009

Я использую объекты COM из Office 2007 для обработки и печати файлов ms-office. У меня нет проблем с документами Word и Excel, но я просто не могу распечатать документы Power Point.

код ниже просто открывает файл, отправляет задание на принтер, но ничего не печатается

что я делаю не так? = (

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Main
{
    class PrintPPoint
    {
        public static void PrintPPointDocument(string filename, int copies, string range)
        {
            Microsoft.Office.Interop.PowerPoint.Presentation work = null;            
            Microsoft.Office.Interop.PowerPoint.Application app = new Microsoft.Office.Interop.PowerPoint.ApplicationClass();
            Microsoft.Office.Interop.PowerPoint.Presentations presprint = app.Presentations;
            //app.Visible = Microsoft.Office.Core.MsoTriState.msoTrue;
            work = presprint.Open(filename, Microsoft.Office.Core.MsoTriState.msoCTrue, Microsoft.Office.Core.MsoTriState.msoCTrue, Microsoft.Office.Core.MsoTriState.msoFalse);
            work.PrintOptions.PrintInBackground = 0;
            work.PrintOptions.ActivePrinter = app.ActivePrinter;
            if (range.Equals("0"))            
            {                
                work.PrintOut(0, 1, app.ActivePrinter, copies, Microsoft.Office.Core.MsoTriState.msoFalse);                
            }
            else
            {
                string[] toprintsheet = range.Split(new char[] { ',' });
                foreach (string aux in toprintsheet)
                {
                    work.PrintOptions.PrintInBackground = 0;
                    work.PrintOptions.ActivePrinter = app.ActivePrinter;
                    if (aux.Contains("-"))
                    {
                        int from = 0, to = 0;
                        string[] SplitRange = aux.Split(new char[] { '-' });
                        from = Convert.ToInt16(SplitRange[0]);
                        to = Convert.ToInt16(SplitRange[1]);                        
                        work.PrintOut(from, to, app.ActivePrinter, 1, Microsoft.Office.Core.MsoTriState.msoFalse);
                    }
                    else
                    {
                        work.PrintOut(Convert.ToInt16(aux), Convert.ToInt16(aux), app.ActivePrinter, copies, Microsoft.Office.Core.MsoTriState.msoFalse);
                    }

                }
            }
            work.Close();
            app.Quit();
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 27 августа 2009

Мне просто нужно было установить

PrintOptions.PrintInBackground = Microsoft.Office.Core.MsoTriState.msoFalse

Это позволяет завершить работу.

0 голосов
/ 16 июля 2009

Я не могу вам сказать, но держу пари, что вы можете легко узнать себя ...

Я предполагаю, что это приложение, которое взаимодействует с рабочим столом, а не с какой-либо фоновой службой.

Я бы медленно прошел по коду и посмотрел, работает ли он .. (как для app.visible = true, так и нет). Если он работает, это может быть гонка между функцией печати ppoint и закрытием документа / выходом из ppoint. (Даже если вы выключили фоновую печать) и у вас есть проверка для этого ...

Удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...