VB.Net 使用 FoxIt Reader 或 Adob​​e Reader 打印 PDF

标签 vb.net pdf process.start adobe-reader foxit

我在尝试打印 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。

最佳答案

我建议看看他们在 PDFsharp 中做了什么使用 Adob​​e 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.

关于VB.Net 使用 FoxIt Reader 或 Adob​​e Reader 打印 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9475212/

相关文章:

.net - 我可以使用 VB.NET 覆盖类中声明的变量吗?

r - 将带有火星和金星符号的 R 图另存为 pdf

java - XML 字符 <Unicode : 0xc> was found in the element content of the document

pdf - iText生成带汉字的PDF,但不显示

c# - 使用 Process.Start 在 C# 中打开文件

c# - Verb = "runas"的进程不以参数中定义的凭据开始

.net - Process.Start(url) 在 Windows 8/Chrome 上损坏 - 有替代方案吗?

vb.net - 如何从资源文件填充 ImageList

c# - 如何在自定义用户控件(.Net 4、Winforms)上使用项目集合编辑器?

vb.net - 面板控件到图像