VB.Net Печать PDF с использованием FoxIt Reader или Adobe Reader - PullRequest
2 голосов
/ 28 февраля 2012

У меня проблема с Adobe Reader и FoxIt Reader при попытке распечатать документ PDF.Обе проблемы разные, но решение любой из них позволит мне решить мою проблему.

Проблема, с которой я сталкиваюсь с Adobe Reader при попытке печати с использованием следующего кода, заключается в том, что он не будет печатать его в сети.принтер, который я указываю, но только принтер по умолчанию.

Dim AdobeReader As New Process
AdobeReader.StartInfo.CreateNoWindow = False
AdobeReader.StartInfo.Verb = "print"
AdobeReader.StartInfo.FileName = SQLdr("DocumentName") & ".pdf"
Select Case SQLdr("Priority")
    Case 1
        AdobeReader.StartInfo.Arguments = String.Format("/t {0} {1}", SQLdr("DocumentName") & ".pdf", printPriority1)
    Case 2
        AdobeReader.StartInfo.Arguments = String.Format("/t {0} {1}", SQLdr("DocumentName") & ".pdf", printPriority2)
    Case 3
        AdobeReader.StartInfo.Arguments = String.Format("/t {0} {1}", SQLdr("DocumentName") & ".pdf", printPriority3)
    Case 4
        AdobeReader.StartInfo.Arguments = String.Format("/t {0} {1}", SQLdr("DocumentName") & ".pdf", printPriority4)
    Case 5
        AdobeReader.StartInfo.Arguments = String.Format("/t {0} {1}", SQLdr("DocumentName") & ".pdf", printPriority5)
End Select

AdobeReader.Start()
AdobeReader.WaitForExit(10000)
AdobeReader.Close()

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

Проблема, с которой я сталкиваюсь с FoxIt, заключается вчто, когда я пытаюсь напечатать следующий код, он выдаст эту ошибку «Нет приложения, связанного с указанным файлом для этой операции» на FoxItReader.Start.

Dim FoxItReader As New Process
FoxItReader.StartInfo.CreateNoWindow = False
FoxItReader.StartInfo.Verb = "print"
FoxItReader.StartInfo.FileName = "C:\Program Files\Foxit Software\Foxit Reader\Foxit Reader.exe"
Select Case SQLdr("Priority")
    Case 1
        FoxItReader.StartInfo.Arguments = String.Format("/t {0} {1}", SQLdr("DocumentName") & ".pdf", printPriority1)
    Case 2
        FoxItReader.StartInfo.Arguments = String.Format("/t {0} {1}", SQLdr("DocumentName") & ".pdf", printPriority2)
    Case 3
        FoxItReader.StartInfo.Arguments = String.Format("/t {0} {1}", SQLdr("DocumentName") & ".pdf", printPriority3)
    Case 4
        FoxItReader.StartInfo.Arguments = String.Format("/t {0} {1}", SQLdr("DocumentName") & ".pdf", printPriority4)
    Case 5
        FoxItReader.StartInfo.Arguments = String.Format("/t {0} {1}", SQLdr("DocumentName") & ".pdf", printPriority5)
End Select

FoxItReader.Start()
FoxItReader.WaitForExit(10000)
FoxItReader.Close()

С приведенным выше кодом я также попыталсяиметь двойные кавычки вокруг переменных, но это тоже не сработало.

Любая помощь по этому вопросу будет высоко ценится.

РЕДАКТИРОВАТЬ

ТакжеЯ забыл сказать, что и принтер, и файл PDF находятся на сервере, поэтому я пытаюсь использовать общий принтер и PDF через сетевые пути (\\ SERVER \ FILE.PDF).

1 Ответ

2 голосов
/ 28 февраля 2012

Я бы рекомендовал взглянуть на то, что они делают в PDFsharp , используя Adobe Reader / Acrobat для печати: http://pdfsharp.codeplex.com/SourceControl/changeset/view/51421#707803

Я считаю, что они нашли способ обойти по умолчаниюПроблема с принтером в их комментариях:

// AcroRd32.exe /t path printername drivername portname    Executes the reader and prints a file
//                                                         while suppressing the Acrobat print
//                                                         dialog box, then terminating the Reader.
//
// The four parameters of the /t option evaluate to strings.
// printername     The name of the Printer.
// drivername      Your printer drivers name i.e. whatever apperars in the Driver Used box when viewing printer properties.
// portname        The printers port. portname cannot contain any "/" characters; if it does, output is routed to
//                 the default port for that printer.
...