从一个输入PDF文件创建多个PDF文件,使用书签

时间:2016-09-16 12:09:15

标签: vb.net pdf

我一直致力于VB.NET项目,使用SQL数据库和许多输入PDF模板动态创建PDF格式的报告包。简而言之,由于Business Objects创建输入文件的方式,允许输入已编译的PDF报告而不是单个报告模板页面会更有效。但是,为了使其工作,我们需要使用BOBJ创建的书签将输入的PDF文件拆分为多个部分。我们不确定每个书签的范围内有多少页,但需要一致的分割文件命名约定,以便该过程的下一部分可以选择正确的模板并将它们合并到所需的组合中。

使用名为PDFSHARP的.Net库设计并运行此过程的第二部分。我已经使用他们网站上的示例编写了一些代码,这些代码将输入PDF文件分成输入文件的每页一个部分,但是不明白如何使用书签将其拆分。

如果我能理解如何解析PDF并读取包含起始页和结束页面以及书签名称的书签的元数据,那么我想我可以完成它。

输入PDF格式的示例如下: https://drive.google.com/open?id=0B0GZGW6CFCI-UWY2WGRvV0dQSWZSNnNOWlp4R21zbFVPZDBn

有5个书签(TID01,TID02 ......)和6个页面。部分TID04将有两页输出。

我需要的文件名格式为“ExamplePDF_TID01.pdf”

非常感谢任何前进的帮助。 - 看一下该项目的维基,它似乎不再活跃,而其他人过去曾问过这个问题,但我找不到任何答案。

按页面分割的代码:

Sub Splitfiles()

    Dim inputdir As String = "O:\Transformation\Standardisation\Input PDFs"
    Dim outputdir As String = "O:\Transformation\Standardisation\Input PDFs\output\"
    'inputdir = folder path containing input files
    Dim fileEntries As String() = Directory.GetFiles(inputdir)
    Dim filename As String
    Dim pdfpage As PdfPage
    Dim ccid As String
    Dim pageid As Integer
    Dim outputfilename As String
    For Each filename In fileEntries
        Dim importdoc As PdfDocument = PdfReader.Open(filename, PdfSharp.Pdf.IO.PdfDocumentOpenMode.Import)
        Dim count As Integer = importdoc.PageCount
        Dim x = 0

        Do Until x = count
            Dim outputdoc As PdfDocument = New PdfDocument
            pdfpage = importdoc.Pages(x)
            outputdoc.AddPage(pdfpage)
            ccid = Strings.Right(filename, Len(filename) - Len(inputdir)) 'expand this to find CC ID
            ccid = Strings.Left(ccid, Len(ccid) - 4)
            pageid = x
            outputfilename = outputdir & ccid & "_" & pageid & ".pdf"
            outputdoc.Save(outputfilename)
            x = x + 1
        Loop

    Next
End Sub

我开始按书签分割但无法完成的代码:

    Sub SplitPDFByBookmark()

    Dim inputfile As String = "O:\Transformation\Standardisation\Input PDFs\Business Sub Area Report - Project Management - FY16_FP02 - 17062016_0709.PDF"
    Dim outputdir As String = "O:\Transformation\Standardisation\Input PDFs\output\"
    'inputdir = folder path containing input files
    'Dim fileEntries As String() = Directory.GetFiles(inputdir)
    Dim filename As String
    Dim pdfpage As PdfPage
    Dim ccid As String
    Dim pageid As Integer
    Dim outputfilename As String
    filename = inputfile
    'For Each filename In fileEntries
    Dim importdoc As PdfDocument = PdfReader.Open(filename, PdfSharp.Pdf.IO.PdfDocumentOpenMode.Import)
    Dim count As Integer = importdoc.PageCount
    Dim x = 0

    For Each bookmark In importdoc.Outlines
        Dim outputdoc As PdfDocument = New PdfDocument
        pdfpage = importdoc.Pages(importdoc.Outlines.)
        outputdoc.AddPage(pdfpage)
        pageid = x
        outputfilename = outputdir & "OutputFile_" & pageid & ".pdf"
        outputdoc.Save(outputfilename)
        x = x + 1
    Next

    'Next
End Sub

提前感谢您的帮助!

0 个答案:

没有答案