Программно печатать каталог текстовых документов ... последний файл всегда пропускается - PullRequest
1 голос
/ 22 марта 2009

У меня проблема при попытке программно напечатать каталог документов Word. В этом примере я пытаюсь распечатать только файлы с префиксом «3_». Проблема в том, что файл не печатается, если нет двух файлов с префиксом 3_. Я искал вечно, чтобы понять эту проблему. Что-то не так с тем, как я открываю файл? Он работает только при наличии двух файлов в каталоге, и в этом случае он распечатает только один из двух файлов.

Редактировать: я пробовал окно сообщения, и путь правильный. Имя файла правильное. Кроме того, если я наблюдаю за принтером в папке принтеров, документ будет мигать в течение короткой секунды, а затем исчезнет (печать приостановлена, чтобы я мог видеть вывод). Если слово дает мне ошибку, почему оно не отображается? И почему это работает, если в каталоге есть два файла с префиксом 3_?

Edit: я думаю, что это проблема с методом printout (). Когда я устанавливаю приложение видимым и запускаю его, документ открывается нормально, но ничего не печатается. Я могу открыть документ вручную и распечатать (что отлично работает).

Редактировать: Спасибо всем за ответы. Был задан фоновый параметр в методе printout (). Программа завершала работу до того, как печать могла полностью заскочить (вот почему я видел, как документ мигал в очереди печати и исчезал. Отключение фоновой печати требовало, чтобы документ оставался открытым, и печать была ключевой. Спасибо

string[] filesToCheck = Directory.GetFiles(clientDirectoryPath);
    Object filename = null;
        for (int i = 0; i < filesToCheck.Count();i++ )
        {
            if(filesToCheck[i].Contains("3_"))
            {
                filename = filesToCheck[i];
                wrdDoc = wrdApp.Documents.Open(ref filename, ref oMissing, ref oTrue, ref oFalse,
                                               ref oMissing, ref oMissing,
                                               ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                               ref oMissing,
                                               ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                               ref oMissing);
                wrdDoc.PageSetup.FirstPageTray = letterHeadTray;
                wrdDoc.PageSetup.OtherPagesTray = defaultTray;
                wrdDoc.PrintOut(ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                ref oMissing, ref oMissing, ref oMissing);
                wrdDoc.Close(ref oFalse, ref oMissing, ref oMissing);
                wrdDoc = null;
            }
        }

Ответы [ 4 ]

4 голосов
/ 22 марта 2009

Попробуйте установить параметр Background (1-й параметр) вызова PrintOut () в False.

Вероятно, последнее задание на печать не полностью помещено в буфер и отменено, поскольку объект Word COM запускается слишком рано.

2 голосов
/ 22 марта 2009

попробуйте использовать

string[] files = Directory.GetFiles(dir, "3_*.doc");
foreach(string file in files) { }

вместо

for (int i = 0; i < filesToCheck.Count(); i++ ) { }
1 голос
/ 22 марта 2009

Похоже, что-то не так с вашим опубликованным алгоритмом. Можете ли вы попробовать следующее

  1. Добавить точку останова и убедиться, что в объекте filesToCheck есть все имена файлов? Возможно, это значение неверно и сбрасывает ваш алгоритм
  2. Вместо того, чтобы печатать документ, вместо этого измените код, чтобы вызвать окно сообщения для каждого имени файла. Это устранит фактическую печать, являющуюся частью проблемы (не вижу, как это могло бы быть).

Также, не могли бы вы опубликовать код, который получает объект filesToCheck?

EDIT

ОП упомянул, что все файлы определенно проходят. Попробуйте обернуть операцию печати в блок try / catch и посмотрите, нет ли каких-либо исключений, которые препятствуют печати файлов.

0 голосов
/ 22 марта 2009

Попробуйте не использовать «_» в имени файла. Я видел некоторые странные причуды раньше с этим зарядным устройством и PrintOut.

...