iTextSharp怎么实现多个pdf的合并,生成新的pdf呢?并且在合并的pdf右上角输入页码?
pdf 目录中有多个pdf文件,每个文件都有顺序号,名称格式为:【编号0】 - 名称封面页.pdf,【编号1】 - 名称目录页.pdf,【编号2】 - 名称123.pdf,【编号3】 - 名称123456.pdf……1、怎么实现获取每个pdf文件的页数,并将所有pdf的页数进行汇总统计。【已实现】
2、怎么实现以pdf文件名称前面的编号012345678……为顺序,依次将多个pdf文件合并成一个名为合并.pdf文件呢?
3、怎么实现在新生成的pdf中从封面页+目录页页数之后开始,假定封面页1页,目录页2页在新的pdf文件右上角指定位置X200Y30从1开始输入页码。
以下内容是专门发给有点蓝浏览
1、怎么实现获取每个pdf文件的页数,并将所有pdf的页数进行汇总统计。【已实现】
获取目录下pdf对应的所有页码总数:
Dim ymsum As Integer = 0
For Each File As String In FileSys.GetFiles("C:\Users\Administrator\Desktop") '遍历指定目录下的文件
If FileSys.GetName(File).Contains(".pdf") Then '找到名称中含pdf的文件
Output.Show(File)
Dim reader As New iTextSharp.text.pdf.PdfReader(File) '获取文件的页数
output.Show(reader.NumberOfPages)
ymsum = ymsum + reader.NumberOfPages '统计总的页数
End If
Next
Output.Show(ymsum) '输出指定目录下的pdf文件的所有页码数
2、怎么实现以pdf文件名称前面的编号012345678……为顺序,依次将多个pdf文件合并成一个pdf文件呢?
获取文件名称中的序号数字:
For Each File As String In FileSys.GetFiles("C:\Users\Administrator\Desktop") '遍历指定目录下的文件
Dim filename As String = FileSys.GetName(File)
If filename.Contains(".pdf") Then
If filename.Contains("-名称") Then
Output.Show(filename)
Dim Values() As String
Values = filename.split("-名称")
For Index As Integer = 0 To Values.Length - 1
If Values(1).Contains("名称") = True Then
Output.Show("名称:" & Values(1).Replace("名称", ""))
End If
If Values(0).Contains("编号") = True Then
Output.Show("序号:" & Values(0).Replace("【编号", "").Replace("】", ""))
End If
Next
End If
End If
Next
输出结果为:
【编号0】 - 名称封面页.pdf
名称:封面页.pdf
序号:0
名称:封面页.pdf
序号:0
【编号1】 - 名称目录页.pdf
名称:目录页.pdf
序号:1
名称:目录页.pdf
序号:1
【编号2】 - 名称123.pdf
名称:123.pdf
序号:2
名称:123.pdf
序号:2
【编号3】 - 名称123456.pdf
名称:123456.pdf
序号:3
名称:123456.pdf
序号:3
3、怎么实现在新生成的pdf中从封面页+目录页页数之后开始,假定封面页1页,目录页2页在新的pdf文件右上角指定位置X200Y30从1开始输入页码。
获取封面页+目录页页码总数:
Dim ymsum As Integer = 0
For Each File As String In FileSys.GetFiles("C:\Users\Administrator\Desktop") '遍历指定目录下的文件
If FileSys.GetName(File).Contains("封面页.pdf") Then '找到名称中含pdf的文件
Dim reader As New iTextSharp.text.pdf.PdfReader(File) '获取文件的页数
ymsum = ymsum + reader.NumberOfPages '统计总的页数
reader.Close()
End If
If FileSys.GetName(File).Contains("目录页.pdf") Then '找到名称中含pdf的文件
Dim reader As New iTextSharp.text.pdf.PdfReader(File) '获取文件的页数
ymsum = ymsum + reader.NumberOfPages '统计总的页数
reader.Close()
End If
Next
Output.Show("封面+目录数:" & ymsum)
求助部分:怎么实现多个pdf合并,并写入页码
For Each File As String In FileSys.GetFiles("C:\Users\Administrator\Desktop") '遍历指定目录下的文件
If FileSys.GetName(File).Contains(".pdf") Then '找到名称中含pdf的文件
Output.Show(File)
Dim reader As New iTextSharp.text.pdf.PdfReader(File) '获取文件的页数
Dim document As New iTextSharp.text.Document(reader.GetPageSizeWithRotation(1)) '根据第一页的大小创建一个新的PDF文档;
Dim n As Integer = ymsum '获取原始PDF文件的总页数;
Dim baos As New IO.FileStream("d:\123456.pdf", IO.FileMode.Create, IO.FileAccess.Write) '创建一个新的PDF文件流,用于输出修改后的PDF;
Dim copy As New iTextSharp.text.pdf.PdfCopy(document, baos) '创建一个PdfCopy对象,用于将多个PDF文件合并为一个PDF文件,此处将原始PDF文件的每一页加入到新的PDF文件中;
copy.ViewerPreferences = iTextSharp.text.pdf.PdfWriter.HideToolbar Or iTextSharp.text.pdf.PdfWriter.HideMenubar Or iTextSharp.text.pdf.PdfWriter.HideWindowUI '设置PDF文件的阅读选项,包括隐藏工具栏、菜单栏和窗口UI;
'往pdf中写入内容
document.Open()
For i As Integer = 1 To n
Dim page As iTextSharp.text.pdf.PdfImportedPage = copy.GetImportedPage(reader, i)
copy.AddPage(page) '将新的PDF文件写入到PDF流中;
Next
'关闭PDF文件和流,释放资源。
document.Close()
reader.Close()
End If
Next