Pdf Birleştirme
#7
(16-04-2021, 03:00)userx53 demiş ki: Bu işlem için ücretsiz PDF Splitter and Merger Free kullanıyorum.

Hocam access projeme entegre edeceğim o yüzden böyle bir arayışa girdim.



  Alıntı
Bu mesajı beğenenler:
#8
Bu iş için kendi yazdığım DLL var. Onu deneyebilirsiniz... Kaynak VB kodları ve DLL'ler ektedir.


Visual Basic
  1. Sub Test()
  2.    DoCmd.OutputTo acOutputTable, "COUNTRY", acFormatPDF, Environ("userprofile") & "\Desktop\AccOutput_Part1.pdf"
  3.    DoCmd.OutputTo acOutputTable, "COUNTRY", acFormatPDF, Environ("userprofile") & "\Desktop\AccOutput_Part2.pdf"
  4.    
  5.    Dim arrSrc(1) As String
  6.    
  7.    arrSrc(0) = Environ("userprofile") & "\Desktop\AccOutput_Part1.pdf"
  8.    arrSrc(1) = Environ("userprofile") & "\Desktop\AccOutput_Part2.pdf"
  9.    
  10.    Dim objPDFClown As New PDFClownClass
  11.    
  12.    Call objPDFClown.MergePDF(arrSrc, Environ("userprofile") & "\Desktop\AccOutput_Merge.pdf")
  13.    
  14. End Sub





Class:
Visual Basic
  1. Option Explicit
  2.  
  3. #If Win64 Then
  4.    Private Declare PtrSafe Function FreeLibrary Lib "kernel32" (ByVal hLibModule As LongLong) As LongLong
  5.    Private Declare PtrSafe Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As LongLong
  6.    Private Declare PtrSafe Function GetProcAddress Lib "kernel32" (ByVal hModule As LongLong, ByVal lpProcName As String) As LongLong
  7.    Private Declare PtrSafe Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As LongLong, _
  8.                                                                ByVal hwnd As LongLong, ByVal msg As Long, ByVal wParam As LongLong, _
  9.                                                                ByVal lParam As LongLong) As Object
  10.                                                                    
  11.    Private hLibrary As LongLong
  12. #Else
  13.    Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
  14.    Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
  15.    Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
  16.    Private Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, _
  17.                                                                ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Object
  18.  
  19.    Private hLibrary As Long
  20. #End If
  21.  
  22. Private objPdfClass As Object
  23.  
  24. '-------------------------------
  25. ' Zeki GÜRSOY - PdfClown VBA Lib.
  26. '-------------------------------
  27.  
  28. Public Sub MergePDF(ByRef srcFileNames() As String, ByVal destFile As String)
  29.    Call objPdfClass.MergePDF(srcFileNames, destFile)
  30. End Sub
  31.  
  32. Private Sub Class_Initialize()
  33.    
  34.    #If Win64 Then
  35.        Dim myProc As LongLong
  36.        
  37.        If Dir(CurrentProject.Path & "\PdfVbaLib64.dll") = "" Then
  38.            Err.Raise 1001, , "'PdfVbaLib64.dll' bulunamadı." & vbCrLf & "::.. Zeki GÜRSOY ..::"
  39.            Exit Sub
  40.        End If
  41.        
  42.        hLibrary = LoadLibrary(CurrentProject.Path & "\PdfVbaLib64.dll")
  43.        
  44.        If hLibrary = 0 Then
  45.            Err.Raise 1002, , "'PdfVbaLib64.dll' yüklenemedi." & vbCrLf & "::.. Zeki GÜRSOY ..::"
  46.            Exit Sub
  47.        End If
  48.        
  49.        myProc = GetProcAddress(hLibrary, "NewPDFClass")
  50.        
  51.        If myProc = 0 Then
  52.            Call Class_Terminate
  53.            Err.Raise 1003, , "'NewPDFClass' entry point bulunamadı." & vbCrLf & "::.. Zeki GÜRSOY ..::"
  54.            Exit Sub
  55.        End If
  56.        
  57.    #Else
  58.        Dim myProc As Long
  59.        
  60.        If Dir(CurrentProject.Path & "\PdfVbaLib.dll") = "" Then
  61.            Err.Raise 1001, , "'PdfVbaLib.dll' bulunamadı." & vbCrLf & "::.. Zeki GÜRSOY ..::"
  62.            Exit Sub
  63.        End If
  64.        
  65.        hLibrary = LoadLibrary(destDir & "\PdfVbaLib.dll")
  66.        
  67.        If hLibrary = 0 Then
  68.            Err.Raise 1002, , "'PDFVBALib.dll' yüklenemedi." & vbCrLf & "::.. Zeki GÜRSOY ..::"
  69.            Exit Sub
  70.        End If
  71.        
  72.        myProc = GetProcAddress(myLib, "NewPDFClass")
  73.        
  74.        If myProc = 0 Then
  75.            Call Class_Terminate
  76.            Err.Raise 1003, , "'NewPDFClass' entry point bulunamadı." & vbCrLf & "::.. Zeki GÜRSOY ..::"
  77.            Exit Sub
  78.        End If
  79.        
  80.    #End If
  81.    
  82.    Set objPdfClass = CallWindowProc(myProc, 0, 0, 0, 0)
  83. End Sub
  84.  
  85. Private Sub Class_Terminate()
  86.    If hLibrary <> 0 Then Call FreeLibrary(hLibrary)
  87.    hLibrary = 0
  88. End Sub




Eklenti Dosyaları
.rar   Pdf_Merge_Example.rar (Boyut: 564,88 KB / İndirilme: 44)



  Alıntı
Bu mesajı beğenenler: dsezgin , halily
#9
(16-04-2021, 19:39)Zeki Gürsoy demiş ki: Bu iş için kendi yazdığım DLL var. Onu deneyebilirsiniz... Kaynak VB kodları ve DLL'ler ektedir.


Visual Basic
  1. Sub Test()
  2.    DoCmd.OutputTo acOutputTable, "COUNTRY", acFormatPDF, Environ("userprofile") & "\Desktop\AccOutput_Part1.pdf"
  3.    DoCmd.OutputTo acOutputTable, "COUNTRY", acFormatPDF, Environ("userprofile") & "\Desktop\AccOutput_Part2.pdf"
  4.    
  5.    Dim arrSrc(1) As String
  6.    
  7.    arrSrc(0) = Environ("userprofile") & "\Desktop\AccOutput_Part1.pdf"
  8.    arrSrc(1) = Environ("userprofile") & "\Desktop\AccOutput_Part2.pdf"
  9.    
  10.    Dim objPDFClown As New PDFClownClass
  11.    
  12.    Call objPDFClown.MergePDF(arrSrc, Environ("userprofile") & "\Desktop\AccOutput_Merge.pdf")
  13.    
  14. End Sub





Class:
Visual Basic
  1. Option Explicit
  2.  
  3. #If Win64 Then
  4.    Private Declare PtrSafe Function FreeLibrary Lib "kernel32" (ByVal hLibModule As LongLong) As LongLong
  5.    Private Declare PtrSafe Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As LongLong
  6.    Private Declare PtrSafe Function GetProcAddress Lib "kernel32" (ByVal hModule As LongLong, ByVal lpProcName As String) As LongLong
  7.    Private Declare PtrSafe Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As LongLong, _
  8.                                                                ByVal hwnd As LongLong, ByVal msg As Long, ByVal wParam As LongLong, _
  9.                                                                ByVal lParam As LongLong) As Object
  10.                                                                    
  11.    Private hLibrary As LongLong
  12. #Else
  13.    Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
  14.    Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
  15.    Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
  16.    Private Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, _
  17.                                                                ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Object
  18.  
  19.    Private hLibrary As Long
  20. #End If
  21.  
  22. Private objPdfClass As Object
  23.  
  24. '-------------------------------
  25. ' Zeki GÜRSOY - PdfClown VBA Lib.
  26. '-------------------------------
  27.  
  28. Public Sub MergePDF(ByRef srcFileNames() As String, ByVal destFile As String)
  29.    Call objPdfClass.MergePDF(srcFileNames, destFile)
  30. End Sub
  31.  
  32. Private Sub Class_Initialize()
  33.    
  34.    #If Win64 Then
  35.        Dim myProc As LongLong
  36.        
  37.        If Dir(CurrentProject.Path & "\PdfVbaLib64.dll") = "" Then
  38.            Err.Raise 1001, , "'PdfVbaLib64.dll' bulunamadı." & vbCrLf & "::.. Zeki GÜRSOY ..::"
  39.            Exit Sub
  40.        End If
  41.        
  42.        hLibrary = LoadLibrary(CurrentProject.Path & "\PdfVbaLib64.dll")
  43.        
  44.        If hLibrary = 0 Then
  45.            Err.Raise 1002, , "'PdfVbaLib64.dll' yüklenemedi." & vbCrLf & "::.. Zeki GÜRSOY ..::"
  46.            Exit Sub
  47.        End If
  48.        
  49.        myProc = GetProcAddress(hLibrary, "NewPDFClass")
  50.        
  51.        If myProc = 0 Then
  52.            Call Class_Terminate
  53.            Err.Raise 1003, , "'NewPDFClass' entry point bulunamadı." & vbCrLf & "::.. Zeki GÜRSOY ..::"
  54.            Exit Sub
  55.        End If
  56.        
  57.    #Else
  58.        Dim myProc As Long
  59.        
  60.        If Dir(CurrentProject.Path & "\PdfVbaLib.dll") = "" Then
  61.            Err.Raise 1001, , "'PdfVbaLib.dll' bulunamadı." & vbCrLf & "::.. Zeki GÜRSOY ..::"
  62.            Exit Sub
  63.        End If
  64.        
  65.        hLibrary = LoadLibrary(destDir & "\PdfVbaLib.dll")
  66.        
  67.        If hLibrary = 0 Then
  68.            Err.Raise 1002, , "'PDFVBALib.dll' yüklenemedi." & vbCrLf & "::.. Zeki GÜRSOY ..::"
  69.            Exit Sub
  70.        End If
  71.        
  72.        myProc = GetProcAddress(myLib, "NewPDFClass")
  73.        
  74.        If myProc = 0 Then
  75.            Call Class_Terminate
  76.            Err.Raise 1003, , "'NewPDFClass' entry point bulunamadı." & vbCrLf & "::.. Zeki GÜRSOY ..::"
  77.            Exit Sub
  78.        End If
  79.        
  80.    #End If
  81.    
  82.    Set objPdfClass = CallWindowProc(myProc, 0, 0, 0, 0)
  83. End Sub
  84.  
  85. Private Sub Class_Terminate()
  86.    If hLibrary <> 0 Then Call FreeLibrary(hLibrary)
  87.    hLibrary = 0
  88. End Sub


Hocam ilginize teşekkür ederim öncelikle.

Ben çalışmanızı inceledim fakat ekteki hatayı verdi.    dll dosyaları ile beraber veritabanını masaüstüne çıkardım. dll leri başka bir yere mi kopyacalağım acaba?

Birde bu çalışmada belirli sayıda pdf i birleştiriyoruz sanırım. Ben bir klasör içerisine bazen 5 pdf atacağım bazen 10 pdf. İsim sırasına göre bunu nasıl birleştirebilirim.


Saygılarımla


Eklenti Dosyaları
.jpg   Test.jpg (Boyut: 252,19 KB / İndirilme: 34)



  Alıntı
Bu mesajı beğenenler:
#10
Ekteki hatanın sebebi tanımsız değişken kullanımından kaynaklı. O satırı, aşağıdaki satır ile değiştirin. (Zaten hatalıymış)


Visual Basic
  1. hLibrary = LoadLibrary(CurrentProject.Path & "\PdfVbaLib.dll")




Dosya sayısı sabit değil... String tipinde dinamik dizi kullanmanız gerekiyor. Bunu bu başlığın altında anlatmak yakışık olmaz. Basit bir konudur; araştırıp öğrenmeniz sonraki projeler için de faydalı olacaktır.



  Alıntı
Bu mesajı beğenenler:
#11
(16-04-2021, 23:25)Zeki Gürsoy demiş ki: Ekteki hatanın sebebi tanımsız değişken kullanımından kaynaklı. O satırı, aşağıdaki satır ile değiştirin. (Zaten hatalıymış)


Visual Basic
  1. hLibrary = LoadLibrary(CurrentProject.Path & "\PdfVbaLib.dll")




Dosya sayısı sabit değil... String tipinde dinamik dizi kullanmanız gerekiyor. Bunu bu başlığın altında anlatmak yakışık olmaz. Basit bir konudur; araştırıp öğrenmeniz sonraki projeler için de faydalı olacaktır.

Zeki Hocam,
Bu seferde ekteki hatayı verdi.

Saygılarımla


Eklenti Dosyaları
.jpg   test2.jpg (Boyut: 243,43 KB / İndirilme: 37)



  Alıntı
Bu mesajı beğenenler:
#12
(16-04-2021, 23:25)Zeki Gürsoy demiş ki: Ekteki hatanın sebebi tanımsız değişken kullanımından kaynaklı. O satırı, aşağıdaki satır ile değiştirin. (Zaten hatalıymış)


Visual Basic
  1. hLibrary = LoadLibrary(CurrentProject.Path & "\PdfVbaLib.dll")




Dosya sayısı sabit değil... String tipinde dinamik dizi kullanmanız gerekiyor. Bunu bu başlığın altında anlatmak yakışık olmaz. Basit bir konudur; araştırıp öğrenmeniz sonraki projeler için de faydalı olacaktır.

Zeki Hocam,
Bu seferde ekteki hatayı verdi.

Ek 11.Mesajdaki gibidir.

Saygılarımla



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  [SORGU] Sayı Formatı Bozulmadan Metinle Birleştirme atyaty 2 78 08-12-2023, 18:57
Son Mesaj: atyaty
  Birden Fazla Alandaki Veriyi Sorguda Alt Alta Birleştirme adnnfrm 3 168 18-11-2023, 19:54
Son Mesaj: dsezgin
  Birleştirme Hakkında. Satir 7 192 10-09-2023, 18:21
Son Mesaj: Satir
  [FORM] Sürekli Formda Belli Bir Sütundaki Satırları Tek Bir Metin Kutusunda Birleştirme dormin 4 212 18-01-2023, 14:29
Son Mesaj: dormin
  [SORGU] Iki Tablodaki Veriyi Birleştirme Sorgusu alican60 5 300 10-03-2022, 10:16
Son Mesaj: dsezgin
  [VBA] Metin Birleştirme h2001 3 439 25-08-2021, 16:27
Son Mesaj: onur_can
  [SORGU] Sorgu Birleştirme tolgahat 1 309 15-05-2021, 16:22
Son Mesaj: lemoncher2
  [TABLO] Tabloda Yüzde 5 Ve Yüzde 10 Formülü Birleştirme golf2000 12 821 30-01-2021, 12:28
Son Mesaj: golf2000

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi