使用SelectPdf在VB.NET中合并PDF遇类型转换错误求助
解决SelectPdf在VB.NET中合并PDF时的InvalidCastException错误
你遇到的System.InvalidCastException: 'Conversion from string ""D:\PDF\1.pdf"" to type 'Integer' is not valid.'错误,核心原因是错误使用了PdfDocument的构造函数:该构造函数不支持直接传入文件路径字符串(它的重载参数为整数类型,比如页面尺寸枚举值),导致系统尝试将字符串转换为整数失败。
修正方案
SelectPdf中加载现有PDF文件,需要使用静态方法PdfDocument.LoadFromFile(),而非直接实例化PdfDocument并传入路径。同时推荐使用Using语句自动管理资源,避免手动调用Close()遗漏导致的资源泄漏。
修正后的完整代码
Public Sub MergePDF() Dim file1 As String = "D:\PDF\1.pdf" Dim file2 As String = "D:\PDF\2.pdf" ' Using语句会自动释放PDF文档资源,无需手动Close Using doc1 As PdfDocument = PdfDocument.LoadFromFile(file1) Using doc2 As PdfDocument = PdfDocument.LoadFromFile(file2) Using mergedDoc As New PdfDocument() ' 将两个PDF的页面追加到新文档 mergedDoc.Append(doc1) mergedDoc.Append(doc2) ' 输出合并后的PDF到响应流 mergedDoc.Save(Response, False, "Sample.pdf") End Using End Using End Using End Sub
额外说明
如果你的SelectPdf版本特殊,可查看PdfDocument的构造函数重载列表,但绝大多数场景下,加载本地PDF文件的标准方式都是LoadFromFile静态方法。
内容的提问来源于stack exchange,提问作者delma wax
相关产品推荐
相关产品推荐

