合并PDF文件命令行与书签



我正在尝试完成合并PDF文件到一个PDF的简单任务。我希望生成的PDF文件对文件名中的每个文件都有书签。我希望有一个自由解。

我在windows系统上,想从命令行或更好的MSSQL执行这个。

事情是,我将创建一个PDF文件的订单从ERP系统与水晶报告。存储过程将创建这些PDF文件。之后,我想采取选定的PDF,并创建一个新的合并的PDF和合并的PDF应该有每个订单号(从文件名)作为书签。因此,如果您正在搜索特定的订单,您可以轻松跳转到订单号。

正如我所说的最好是免费的解决方案,如果没有可用的,我准备编写自己的合并程序,例如c#或类似的

我想你至少需要adobeacrobat。或者,如果你没有,你不想为此付费,你可以将所有的pdf文件转换为TXT文件,并合并所有的TXT文件。这听起来有点麻烦,但实际上,最简单的事情…也许……就是把所有的TXT文件转换成Excel文件,然后合并。这一点都不难。下面是一个将所有TXT文件转换为Excel文件的脚本。

Private Declare Function SetCurrentDirectoryA Lib _
        "kernel32" (ByVal lpPathName As String) As Long
Public Function ChDirNet(szPath As String) As Boolean
'based on Rob Bovey's code
    Dim lReturn As Long
    lReturn = SetCurrentDirectoryA(szPath)
    ChDirNet = CBool(lReturn <> 0)
End Function
Sub Get_TXT_Files()
'For Excel 2000 and higher
    Dim Fnum As Long
    Dim mysheet As Worksheet
    Dim basebook As Workbook
    Dim TxtFileNames As Variant
    Dim QTable As QueryTable
    Dim SaveDriveDir As String
    Dim ExistFolder As Boolean
    'Save the current dir
    SaveDriveDir = CurDir
    'You can change the start folder if you want for
    'GetOpenFilename,you can use a network or local folder.
    'For example ChDirNet("C:your_path_here")
    'It now use Excel's Default File Path
    ExistFolder = ChDirNet("C:your_path_here\Text")
    If ExistFolder = False Then
        MsgBox "Error changing folder"
        Exit Sub
    End If
    TxtFileNames = Application.GetOpenFilename _
    (filefilter:="TXT Files (*.txt), *.txt", MultiSelect:=True)
    If IsArray(TxtFileNames) Then
        On Error GoTo CleanUp
        With Application
            .ScreenUpdating = False
            .EnableEvents = False
        End With
        'Add workbook with one sheet
        Set basebook = Workbooks.Add(xlWBATWorksheet)
        'Loop through the array with txt files
        For Fnum = LBound(TxtFileNames) To UBound(TxtFileNames)
            'Add a new worksheet for the name of the txt file
            Set mysheet = Worksheets.Add(After:=basebook. _
                                Sheets(basebook.Sheets.Count))
            On Error Resume Next
            mysheet.Name = Right(TxtFileNames(Fnum), Len(TxtFileNames(Fnum)) - _
                                    InStrRev(TxtFileNames(Fnum), "", , 1))
            On Error GoTo 0
            With ActiveSheet.QueryTables.Add(Connection:= _
                        "TEXT;" & TxtFileNames(Fnum), Destination:=Range("A1"))
                .TextFilePlatform = xlWindows
                .TextFileStartRow = 1
                'This example use xlDelimited
                'See a example for xlFixedWidth below the macro
                .TextFileParseType = xlDelimited
                'Set your Delimiter to true
                .TextFileTabDelimiter = True
                .TextFileSemicolonDelimiter = False
                .TextFileCommaDelimiter = False
                .TextFileSpaceDelimiter = False
                'Set the format for each column if you want (Default = General)
                'For example Array(1, 9, 1) to skip the second column
                .TextFileColumnDataTypes = Array(1, 9, 1)
                'xlGeneralFormat  General          1
                'xlTextFormat     Text             2
                'xlMDYFormat      Month-Day-Year   3
                'xlDMYFormat      Day-Month-Year   4
                'xlYMDFormat      Year-Month-Day   5
                'xlMYDFormat      Month-Year-Day   6
                'xlDYMFormat      Day-Year-Month   7
                'xlYDMFormat      Year-Day-Month   8
                'xlSkipColumn     Skip             9
                ' Get the data from the txt file
                .Refresh BackgroundQuery:=False
            End With
        ActiveSheet.QueryTables(1).Delete
        Next Fnum
        'Delete the first sheet of basebook
        On Error Resume Next
        Application.DisplayAlerts = False
        basebook.Worksheets(1).Delete
        Application.DisplayAlerts = True
        On Error GoTo 0
CleanUp:
        ChDirNet SaveDriveDir
        With Application
            .ScreenUpdating = True
            .EnableEvents = True
        End With
    End If
End Sub

相关内容

  • 没有找到相关文章

最新更新