大佬教程收集整理的这篇文章主要介绍了VB.Net将多个pdf合并为一个并导出,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用iText.sharp库,并收集转换代码并尝试使用它(从here)
实际代码在C#中,我将其转换为VB.NET.
Private Function MergeFiles(ByVal sourceFiles As List(Of Byte())) As Byte() Dim mergedPdf As Byte() = Nothing Using ms As New MemoryStream() Using document As New Document() Using copy As New PdfCopy(document,ms) document.Open() For i As Integer = 0 To sourceFiles.Count - 1 Dim reader As New PdfReader(sourceFiles(i)) ' loop over the pages in that document Dim n As Integer = reader.NumberOfPages Dim page As Integer = 0 While page < n page = page + 1 copy.AddPage(copy.GetImportedPage(reader,page)) End While Next End Using End Using mergedPdf = ms.ToArray() End Using End Function
我现在收到以下错误:
我做了一些调试,并将问题跟踪到以下几行:
copy.AddPage(copy.GetImportedPage(reader,copy.AddPage(copy.GetImportedPage(reader,page)))
为什么会发生这种错误?
这是我使用的功能.
Public Shared Function MergePdfFiles(ByVal pdfFiles() As String,ByVal outputPath As String) As Boolean Dim result As Boolean = False Dim pdfCount As Integer = 0 'total input pdf file count Dim f As Integer = 0 'pointer to current input pdf file Dim fileName As String Dim reader As iTextSharp.text.pdf.PdfReader = Nothing Dim pageCount As Integer = 0 Dim pdfDoc As iTextSharp.text.Document = Nothing 'the output pdf document Dim writer As PdfWriter = Nothing Dim cb As PdfContentByte = Nothing Dim page As PdfImportedPage = Nothing Dim rotation As Integer = 0 Try pdfCount = pdfFiles.Length If pdfCount > 1 Then 'Open the 1st item in the array PDFFiles fileName = pdfFiles(f) reader = New iTextSharp.text.pdf.PdfReader(fileName) 'Get page count pageCount = reader.NumberOfPages pdfDoc = New iTextSharp.text.Document(reader.GetPageSizeWithRotation(1),18,18) writer = PdfWriter.GetInstance(pdfDoc,New FileStream(outputPath,FileMode.OpenOrCreate)) With pdfDoc .Open() End With 'Instantiate a PdfContentByte object cb = writer.DirectContent 'Now loop thru the input pdfs While f < pdfCount 'Declare a page counter variable Dim i As Integer = 0 'Loop thru the current input pdf's pages starting at page 1 While i < pageCount i += 1 'Get the input page size pdfDoc.SetPageSize(reader.GetPageSizeWithRotation(i)) 'Create a new page on the output document pdfDoc.NewPage() 'If it is the 1st page,we add bookmarks to the page 'Now we get the imported page page = writer.GetImportedPage(reader,i) 'Read the imported page's rotation rotation = reader.GetPageRotation(i) 'Then add the imported page to the PdfContentByte object as a template based on the page's rotation If rotation = 90 Then cb.AddTemplate(page,-1.0F,1.0F,reader.GetPageSizeWithRotation(i).Height) ElseIf rotation = 270 Then cb.AddTemplate(page,reader.GetPageSizeWithRotation(i).Width + 60,-30) Else cb.AddTemplate(page,0) End If End While 'Increment f and read the next input pdf file f += 1 If f < pdfCount Then fileName = pdfFiles(f) reader = New iTextSharp.text.pdf.PdfReader(fileName) pageCount = reader.NumberOfPages End If End While 'When all done,we close the document so that the pdfwriter object can write it to the output file pdfDoc.Close() result = True End If Catch ex As Exception Return False End Try Return result End Function
以上是大佬教程为你收集整理的VB.Net将多个pdf合并为一个并导出全部内容,希望文章能够帮你解决VB.Net将多个pdf合并为一个并导出所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。