2016-11-15 8 views
0

私はPDFファイルを1つのPDFにマージする単純なタスクを達成しようとしています。そして結果のPDFファイルに、ファイル名の各ファイルにブックマークを付けるようにします。そして、私はこのために無料のソリューションを持っていたいと思います。ブックマークでPDFファイルのコマンドラインをマージする

私はWindowsシステム上で、コマンドラインから、またはMSSQLからさらに優れた方法でこれを実行したいと考えています。

私は、Crystal Reportsを使用してERPシステムから注文のPDFファイルを作成するということです。ストアドプロシージャはこれらのPDFファイルを作成します。その後、私は選択されたPDFを取ってそれらの新しいマージされたPDFを作成したいし、マージされたPDFはブックマークとして(ファイル名から)各注文番号を持つ必要があります。特定の番号を検索している場合は、注文番号に簡単にジャンプできます。

私は好ましくは無料のソリューションと言っていますが、利用できない場合は、例えばC#などの独自のマージプログラムをコーディングする準備ができています。

+0

あなたはどれくらい得ましたか?どのビットが機能しますか?どのビットを貼りつけていますか? –

+0

私は、コマンドラインツールを探すためにPDFファイルをマージするためのソリューションを探そうとしており、見つからなかった。私は個々のPDFファイルが完成した時点で、マージを処理する独自のプログラムを作成しようとするべきかどうか、あるいは既にこれを行う何かがあるかどうかを実際に判断することはできません。私はどこにいたのかと思う。 –

+0

マージする必要はありますか? a)個々のPDFをエクスポートするb)同じプロセスを再利用して結合PDFをエクスポートすることはできませんか? –

答えて

0

私はあなたには最低限のAdobe Acrobatが必要だと思います。または、それを持っておらず、料金を払う必要がない場合は、すべての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 
関連する問題