2

PDF ドキュメントを印刷しようとすると、Adobe Reader と FoxIt Reader の両方で問題が発生します。どちらの問題も異なりますが、どちらかを解決することで問題を解決できます。

次のコードを使用して印刷しようとすると、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 ファイルの両方がサーバー上にあることを忘れていたので、ネットワーク パス (\\SERVER\FILE.PDF) 経由で共有プリンターと PDF を使用しようとしています。

4

1 に答える 1

2

Adobe Reader / Acrobatを使用 してPDFsharpで何を実行するかを確認することをお勧めします: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.
于 2012-02-28T02:00:57.427 に答える