WPF / MVVM.Печать нескольких фотографий за один процесс - PullRequest
0 голосов
/ 27 сентября 2018

Я должен распечатать все фотографии, хранящиеся в каталоге.Пользователи просят открыть диалоговое окно предварительного просмотра, чтобы они могли выбрать расположение страницы ( см. Рисунок ).Я попытался использовать инструмент Process, но он работает только для одного файла.Вот код

                        Dim info As New ProcessStartInfo()
                        info.Verb = "print"

                        info.FileName = "C:\Pictures\pic1.jpg"
                        info.LoadUserProfile = True

                        Dim p As New Process()
                        Try
                            p.StartInfo = info
                            p.Start()
                            p.WaitForExit()
                            System.Threading.Thread.Sleep(3000)
                            If False = p.CloseMainWindow() Then
                                p.Kill()
                            End If
                        Catch i As System.InvalidOperationException
                            System.Threading.Thread.Sleep(100)
                        End Try

Это работает.Когда я пытаюсь установить для info.FileName значение "C: \ Pictures \ pic1.jpg C: \ Pictures \ pic2.jpg" или "[pic1]; [pic2]" или ". ";но я всегда получаю сообщение об ошибке

System.ComponentModel.Win32Exception {"не удалось найти файл"}

Как я могу настроить его для выбора всех файлов в каталоге?спасибо

Ответы [ 3 ]

0 голосов
/ 27 сентября 2018

Я должен печатать, зацикливаясь на файлах каталогов.Но это приводит к тому, что процесс печати запускается в автоматическом режиме, и по одному на каждый файл для печати.Это не то, что мне нужно: я хочу смоделировать множественный выбор и печать.Я попытался запустить команду «print» в командной оболочке Windows

Dim pr As New System.Windows.Controls.PrintDialog
                Dim myprinter = pr.PrintQueue.QueuePort.Name


Dim files = "C:\pic1.jpg C:\pic2.jpg"
Dim command = String.Format("/C print /D:{0} {1}", myprinter, files)
info.FileName = "cmd.exe"
info.Arguments = command

сгенерированная строка команды

/ C print / D: HPColorLaserJetM553 C: \ pic1.jpg C: \ pic2.jpg

который не работает, даже если процесс заканчивается без явных ошибок.Если я пытаюсь запустить командную строку из оболочки Windows, я получаю сообщение об ошибке

"Не удалось инициализировать устройство D: HPColorLaserJetM553"

0 голосов
/ 11 марта 2019

Сохраните путь ко всем файлам в string[] или char[][] (массив строк), затем выполните цикл этой инструкции:

rundll32 shimgvw.dll ImageView_PrintTo /pt "files[i]" "HP Color LaserJet M553 PCL 6"
0 голосов
/ 27 сентября 2018

вы можете использовать

using System.IO;
:
:
string[] filePaths = Directory.GetFiles(@"c:\Pictures\", "*.jpg");

и после всего итерации файловых путей печатать каждый файл

...