使用 .NET Interop 在 Adob​​e Reader 9 中以编程方式打印

2023-12-03

我正在使用 VB.Net WinForms。我想调用 Adob​​e Reader 9 ActiveX 控件来打印一些 PDF。我已经将ActiveX控件添加到VS工具箱中(dll是AcroPDF.dll,COM名称“Adobe PDF Reader”。经过一些实验,以下代码有效。

Dim files As String() = Directory.GetFiles(TextBoxPath.Text, "*.pdf", SearchOption.TopDirectoryOnly)

Using ActiveXPDF As New AxAcroPDFLib.AxAcroPDF

    Me.Controls.Add(ActiveXPDF)
    ActiveXPDF.Hide()

    For Each filename As String In files

        ActiveXPDF.LoadFile(filename)
        ActiveXPDF.printAll()

        'Begin Yukky Hack    '


        Dim endTime As Date = DateAdd(DateInterval.Second, 20, Now)
        Do While Now < endTime
            My.Application.DoEvents()
        Loop

        'End Yuk   '

    Next

End Using

如果没有 Yuk 位,这只会打印一些 PDF,看来 End using 语句在完成打印之前正在调用控件上的 dispose。

因此,对 printAll 的调用似乎是非阻塞的,但我找不到可以查询以查看打印假脱机是否已完成的回调或状态属性。我缺少一个属性/方法,或者是否有更优雅(且响应更快)的解决方法?


使用此方法打印多个文档的效果并不像您所发现的那样好。

让它工作是相当棘手的,但这里是解决方案的一般描述。

我使用 System.Diagnostics.Process 使用 myProcess.StartInfo.Verb = "Print" 进行打印 然后,我分两步检查打印机队列的状态和状态,以确保打印已准备就绪,可以打印下一个文档。使用 WMI 和 ManagementObjectSearcher 通过“SELECT * FROM Win32_Printer”枚举打印机信息。 逻辑是,我尝试在继续打印下一个之前查看假脱机是否已启动。

See http://msdn.microsoft.com/en-us/library/aa394363.aspx对于 Win32_Printer WMI 类。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 .NET Interop 在 Adob​​e Reader 9 中以编程方式打印 的相关文章

随机推荐

  • Android 中的线程处理长时间运行的进程

    好吧 这是我的问题 我想学习 AsyncTask Threading 和 Handler 来处理长时间运行的任务 我使用了 Android Cook Book 和 New Boston Android 教程 但我无法使其工作 我需要更改进度
  • 使用动态 ID 选择 Multiple SelectManyCheckBox 中的所有项目

    我想使用 JSF 顶部的 PrimeFaces 组件来选择某些复选框组中的所有复选框 我的代码是这样的
  • 获取 RecyclerView 中的可见项

    我需要知道哪些元素当前显示在我的 RecyclerView 中 没有相当于OnScrollListener onScroll ListView 上的方法 我尝试与View getGlobalVisibleRect 但是这个 hack 太丑陋
  • 以编程方式登录站点

    这可能听起来很愚蠢 但是我们可以通过传递用户凭据 用户 ID 和密码 以编程方式登录 Linkedin 等网站吗 我不是在谈论使用 OAuth 或其他机制 Edit 您可以使用脚本以这种方式登录许多站点 我通常更喜欢使用 Beautiful
  • UITextView - 设置字体不适用于 XCode 5 上的 iOS 6

    我正在为我的用户界面使用故事板 我之前使用的是 XCode 4 6 并在 iOS 6 上发布 此后我使用 XCode 5 更新到 iOS 7 并更新了 Storyboard 以与 XCode 5 很好地配合 但我有一个问题 UITextVi
  • 在 React 的 useEffect() 中获取数据返回“未定义”

    我正在尝试从数据库中获取数据 这是一个获取请求 只要我在异步函数中使用获取的数据 一切都可以正常工作 但除此之外 它只是返回 未定义 我究竟做错了什么 感谢您的帮助 const accountInfos setAccountInfos us
  • 创建一个新文件,文件名包含循环变量,python [重复]

    这个问题在这里已经有答案了 我想在循环上运行一个函数 并且想将输出存储在不同的文件中 以便文件名包含循环变量 这是一个例子 for i in xrange 10 f open file i dat w f write str func i
  • Chrome 和 CSS 属性选择器

    我有以下 HTML 代码 我想用 css 格式化无法更改的数据格式 来自 xml 我必须为具有不同属性值的元素赋予不同的样式 我想使用 CSS 属性选择器 body background color black s text decorat
  • 如何在 Grails 脚本中访问服务?

    关于 create script run script 的文档很少 所以我想知道是否可以在 grails 脚本中注入 使用域类 在普通的 Grails 类中 我可以注入如下服务 定义我的服务 但我不确定 grails 脚本中的位置 要在脚本
  • jQuery,如何在 .load() 之后重新绑定 html 元素

    我有一个 html 组件 单击按钮后将重新加载该组件 组件的某些元素绑定到单击和悬停处理程序 一切工作正常 直到 load 调用函数来重新加载组件 加载组件的元素未绑定到相应的处理程序 此时 我将 js 脚本放在组件的末尾 以便它绑定元素
  • Flask 中的一对一关系

    我正在尝试使用 SqlAlchemy 在 Flask 中创建一对一关系 我按照之前的post我创建了如下类 class Image db Model tablename image image id db Column db Integer
  • 使用 writeAttribute() 方法使用 XMLWriter 进行 php XML 导出问题

    我正在将表数据导出到 xml 中 其中在内容列中包含多语言内容并混合了 html 例如 xmlWriter gt writeAttribute value contents record name testing contents Just
  • JsFiddle 上的鼠标事件不起作用?

    我的小提琴在这里 但我不明白为什么它没有在 onmouseout 事件上调用我的函数 http jsfiddle net foreyez Xf6LW 有任何想法吗 工作正常 您只需将函数放在文档的头部 或元素位于 DOM 中之后的主体中 即
  • 如何使用 Telethon bot API 获取频道实体?

    我无法使用 Telethon Bot 获取对话框 因为该方法仅适用于客户端 因此 当我尝试使用其 id 访问实体时 我收到错误 如果我无法解析所有通道并且无法通过 id 访问它们 我该如何访问实体 通道 我想解析来自私人群组的消息并使用 T
  • Tensorflow和OpenCV实时分类

    我正在测试机器学习水域并使用TS成立模型来重新训练网络以对我想要的对象进行分类 最初 我的预测是在本地存储的图像上运行的 我意识到从文件中取消持久化图形需要 2 5 秒的时间 并且大约在同一时间运行实际的预测 此后 我调整了我的代码以合并来
  • CreateProcess 立即返回,但前提是启动的进程被隐藏

    我有下面的 Delphi 代码来为 CreateProcess API 调用提供一个友好的包装器 function StartProcess ExeName string CmdLineArgs string ShowWindow bool
  • Apache Spark 处理 case 语句

    我正在处理将 SQL 代码转换为 PySpark 代码的过程 并遇到了一些 SQL 语句 我不知道如何处理 pyspark 中的案例陈述 我计划创建一个 RDD 然后使用 rdd map 然后进行一些逻辑检查 这是正确的做法吗 请帮忙 基本
  • 非常简单的 html 的意外边距

    我有一个非常简单的html 红色 div 位于蓝色 div 内部 并且上边距为 10 像素 在非 ie 浏览器上 蓝色框距离视口顶部 10 px 红色 div 位于蓝色 div 的最顶部 我期望的是 ie 行为 红色 div 必须距蓝色 d
  • Visual Studio 2012支持哪个XP版本[作为目标操作系统]

    Visual Studio 2012 支持哪个版本的 Windows XP 编辑 VS12支持编译到哪个版本 我找到了这篇文章 http blogs msdn com b vcblog archive 2012 10 08 windows
  • 使用 .NET Interop 在 Adob​​e Reader 9 中以编程方式打印

    我正在使用 VB Net WinForms 我想调用 Adob e Reader 9 ActiveX 控件来打印一些 PDF 我已经将ActiveX控件添加到VS工具箱中 dll是AcroPDF dll COM名称 Adobe PDF Re