发票合并打印工具如此简单

如何在 VB.NET 项目中使用 pdfium.dll(PDFium 引擎)和 PdfiumViewer.dll(基于 PDFium 的 .NET 控件),来实现 PDF 文档的渲染和显示呢?

其实已经有比较好的库来实现发票的合并打印功能了,现在简单说明下基本用法。也把成品案例提供出来。不想自己写的可以直接用。

https://download.youkuaiyun.com/download/lucifercxw/90185252

准备工作

  1. 下载 PDFium 库:

    • 访问 https://github.com/pvginkel/PdfiumViewer,下载最新版本的 PdfiumViewer NuGet 包或直接下载包含 pdfium.dll 和 PdfiumViewer.dll 的 zip 文件。

    • 解压文件后,您应该找到 pdfium.dll (x86 或 x64 版本,取决于您的应用程序目标平台) 以及 PdfiumViewer.dll。

  2. 创建 VB.NET 项目:

    • 在 Visual Studio 中创建一个新的 Windows Forms 应用程序项目 (或 WPF 应用程序,代码稍有不同)。

  3. 添加引用:

    • 右键单击您的项目,选择“添加” -> “引用”。

    • 浏览并选择 PdfiumViewer.dll。 点击“确定”。

  4. 复制 pdfium.dll:

    • 将 pdfium.dll 文件复制到您的项目输出目录(通常是 bin\Debug 或 bin\Release 文件夹)。

    • 注意: 确保 pdfium.dll 的架构(x86 或 x64)与您的应用程序架构匹配。

代码示例 (Windows Forms)

下面是一个简单的示例,演示如何在 Windows Forms 应用程序中显示 PDF 文档:

Imports System.IO
Imports PdfiumViewer
Imports System.Drawing

Public Class Form1

    Private pdfViewer As PdfiumViewer.PdfViewer
    Private pdfDocument As PdfDocument

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        ' 创建 PDF 查看器控件
        pdfViewer = New PdfiumViewer.PdfViewer()
        pdfViewer.Dock = DockStyle.Fill
        Me.Controls.Add(pdfViewer)


        '加载 PDF 文档
        Dim pdfFilePath As String = Path.Combine(Application.StartupPath, "example.pdf") ' 假设您的 PDF 文件在项目输出目录

        If File.Exists(pdfFilePath) Then
            Try
                pdfDocument = PdfDocument.Load(pdfFilePath)
                pdfViewer.Document = pdfDocument
            Catch ex As Exception
                 MessageBox.Show("加载PDF文件失败: " + ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        Else
            MessageBox.Show("PDF文件未找到: " + pdfFilePath, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If


    End Sub

    Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
       '释放资源
        If pdfDocument IsNot Nothing Then
             pdfDocument.Dispose()
        End If
    End Sub
End Class

代码详解:

  1. Imports 语句: 导入需要的命名空间,System.IO 用于文件操作,PdfiumViewer 用于 PDFium 查看器控件。

  2. pdfViewer 变量: 声明一个 PdfiumViewer.PdfViewer 类型的变量,用于存储 PDF 查看器控件实例。

  3. pdfDocument 变量: 声明一个 PdfDocument 类型的变量, 用于存储打开的PDF文档实例。

  4. Form1_Load 事件处理程序:

    • 创建 PdfViewer 控件: 创建一个新的 PdfViewer 实例,并设置其 Dock 属性为 DockStyle.Fill,使其填充整个窗体。然后将其添加到窗体的控件集合中。

    • 加载 PDF 文档:

      • 使用 Path.Combine 构建 PDF 文件的完整路径,这里假设 example.pdf 文件位于应用程序的输出目录中。

      • 使用 File.Exists 检查文件是否存在。

      • 如果文件存在,使用 PdfDocument.Load 方法加载 PDF 文档。

      • 如果成功加载,将 pdfDocument 赋值给 pdfViewer.Document属性,从而在控件中显示 PDF 文档。

      • 使用 Try...Catch 结构来捕获加载过程中可能发生的错误,并显示错误消息。

    • 未找到 PDF 文件处理: 如果文件不存在,显示一个错误消息。

  5. Form1_FormClosing 事件处理程序:

    • 在窗口关闭时,确保释放PdfDocument 实例占用的资源,防止内存泄漏。

如何使用

  1. 将上面的代码复制到您的 Form1.vb 文件中。

  2. 在您的项目输出目录中放入一个名为 example.pdf 的 PDF 文件(或者修改代码中的文件名和路径)。

  3. 运行您的应用程序。您应该看到 PDF 文档在窗体中正确显示。

注意事项

  • pdfium.dll 版本: 确保您使用的 pdfium.dll 版本与您的应用程序的架构(x86 或 x64)匹配。

  • 文件路径: 正确配置 pdfium.dll 的路径以及要加载的 PDF 文件的路径。

  • 错误处理: 在代码中添加适当的错误处理逻辑,以捕获加载 PDF 文档时可能发生的异常。

  • 资源释放: 在窗体关闭时,释放 PdfDocument 对象所占用的资源,防止内存泄漏。

  • 高级功能: PdfiumViewer 还提供了其他一些功能,例如缩放、旋转、打印等。您可以参考 https://github.com/pvginkel/PdfiumViewer 提供的文档进行学习。

  • WPF 应用: 如果您使用 WPF,您需要使用 PdfiumViewer.Wpf.PdfViewer 控件,并适当调整代码,但核心逻辑仍然类似。

  • NuGet 包: 您也可以使用 NuGet 包管理器安装 PdfiumViewer,它会自动处理依赖关系,无需手动复制 pdfium.dll。

  • 性能: pdfium.dll 的性能非常高,但如果需要处理大量 PDF 文档或复杂的 PDF,仍然需要考虑性能优化,如异步加载或按需渲染。

大家赶紧去试试吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lucifercxw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值