下一段代码应该将一个多页pdf文件拆分为每页一个文件。它适用于第一页,但当关闭第二页的目标pdfDocument时,它会抛出iText。内核PDFEException:“文档没有页面。”尝试使用不同的源文件,结果相同。还尝试先获取页面数,然后打开每个页面的读卡器,得到相同的结果
Shared Function splitFileIntoPages(sourceFilename As String) As Boolean
If System.IO.File.Exists(sourceFilename) Then
Using reader As New PdfReader(sourceFilename)
Using pdfSource As New PdfDocument(reader)
For iPage = 1 To pdfSource.GetNumberOfPages
Dim destFilename = sourceFilename.Replace(".pdf", String.Format(".Page {0}.pdf", iPage))
Using writer As New PdfWriter(destFilename)
Using pdfDest As New PdfDocument(writer)
pdfSource.CopyPagesTo(iPage, 1, pdfDest)
End Using
End Using
Next
End Using
End Using
End If
Return True
End Function
关键是从PdfSplitter继承并重载方法GetNextPdfWriter,以便为结果文件提供自定义文件名:
Class CustomSplitter
Inherits PdfSplitter
Private _pageIdx As Integer
Private ReadOnly _sourceFilename As String
Shared Function splitFileIntoPages(sourceFilename As String) As Boolean
If System.IO.File.Exists(sourceFilename) Then
Dim destinationFolder = System.IO.Path.GetDirectoryName(sourceFilename)
Using pdfSource As New PdfDocument(New PdfReader(sourceFilename))
Dim oSplitter = New CustomSplitter(pdfSource, sourceFilename)
Dim oSplittedDocs = oSplitter.SplitByPageCount(1)
For Each oSplittedDoc In oSplittedDocs
oSplittedDoc.Close()
Next
End Using
End If
Return True
End Function
Public Sub New(ByVal pdfDocument As PdfDocument, ByVal sourceFilename As String)
MyBase.New(pdfDocument)
_sourceFilename = sourceFilename
_pageIdx = 0
End Sub
Protected Overrides Function GetNextPdfWriter(ByVal documentPageRange As PageRange) As PdfWriter
_pageIdx += 1
Dim filename = _sourceFilename.Replace(".pdf", String.Format(".Page {0}.pdf", _pageIdx))
Return New PdfWriter(filename)
End Function
End Class
用法:
CustomSplitter.splitFileIntoPages("mysourcefile.pdf")
我有pdf文件。需要将它们导入系统并按页面分割。单独的页面=单独的文件。 我尝试使用FPDF和FPDI: 有些文件工作良好,但有些文件我得到了错误: 致命错误:未捕获异常“setasign\Fpdi\PdfParser\CrossReference\CrossReferenceException”,消息为“此PDF文档已加密,无法使用Fpdi处理” 据我所知,这个文件是加密的(但我可以毫无问题地打
我正在将一些PDF编辑工具从iTextSharp更新到iText7。 在iTextSharp中,pdfStamper类中有一个方法:pdfStamper。ReplacePage()。然而,iText7中的pdfStamper类已被删除,我在复制相同的功能时遇到困难。 假设我有文档X,需要用文档Y的第1页替换第4页,但我希望结果保存到一个新的文档Z。 到目前为止,我有3行使用CopyPageTo方法
问题内容: 我想要一个多页的pdf文件,并每页创建单独的pdf文件。 我已经下载了reportlab并浏览了文档,但它似乎是针对pdf生成的。我还没有看到有关处理PDF文件本身的任何信息。 有没有一种简单的方法可以在python中做到这一点? 问题答案: 等等
为了将html转换为pdf,我使用了IText7的API convertToDocument,传递参数模板的ByteArrayInputStream、PDFDocument和ConvertProperties。 相关代码段: “PDF间接对象属于其他PDF文档。请将对象复制到当前PDF文档。” 转换属性的创建 在每次调用convertToDocument API之前创建对象 我是不是漏掉了什么?
我一直在尝试根据预定义的标准将一个docx文档分割为多个文档。以下是我把它分成几段的方法 虽然我能够用上面的代码提取段落,但我找不到提取页面的方法。我的理解是word中的页面是呈现关注点,它发生在word应用程序的运行时。
我正在尝试将一个PDF文档拆分为多个文档,其中每个文档包含的最大页数小于最大文件大小。 我的代码目前可以在Eclipse上运行,但是当我点击. jar文件时,java类中的静态方法似乎崩溃了(但是我似乎抓不到异常)。 不工作的代码是: myListOfDocuments=mysplitter。拆分(文件); 在调用上述行时,JVM会以某种方式退出静态方法。加载似乎工作正常,如下所示:PDDocum