PdfVBALib-2

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,334
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Daha önceleri PdfToText projesinin daha gelişmiş versiyonunu kullanımınıza sunuyorum.

Hazırladığım library şu özelliklere sahiptir:
  • Text alabilme,
  • Mevcutsa; doğrudan tablo olarak alabilme,
  • Resimleri alabilme,
  • Pdf dosyaları birleştirebilme,
  • Sayfaları farklı dosyalara ayırabilme
Kullanım:
  • DLL' i kullanabilmek için "PdfVBALib_32&64" isimli klasörü bilgisayarınızda herhangi bir konuma çıkarın.
  • İçerisindeki "__Install.vbs" dosyasını yönetsel haklar gerekmeksizin çift tıklayarak DLL' i sisteminize tanıtın. DLL' i sisteminizden kaldırmak ya da lokasyonu değiştirmek isterseniz "__Uninstall.vbs" dosyasını kullanabilirsiniz.
  • Artık tüm özellikleri içeren örnek Excel dosyasını inceleyebiliyor olsanız da, yardım için ekli görselde olduğu Object Browser açıklamalarından da faydalanabilirsiniz.
UYARILAR:
  • Kullandığım çekirdeğin lisans ücreti USD cinsinden binler ile tarif edilmekte. Bu nedenle aşağıdaki kısıtlamaların olduğu ücretsiz sürüm kullanılmıştır.
  • Sayfaları Text olarak alırken ilk 10 sayfaya izin verir.
  • Sayfaları tabloya çeviriken ilk 10 sayfaya izin verir.
  • Sayfalardan resimleri çıkarırken kısıtlama yoktur.
  • Pdf dosyanız 10 sayfadan fazla ise, "PdfSplitter" sınıfı ile 10'ar sayfalık parçalara ayırarak kısıtlamalardan kurtulabilmek mümkündür. (Bu teknik, örnek Excel dosyasında mevcuttur.)
İndir : PdfVBALib.rar (8,52 MB)

251558

.
 
Son düzenleme:

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Üstad, Win11 (64Bit) üzerinde Office 2010 (64 Bit) ile denedim, gayet güzel çalıştı. Eline sağlık...

.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,642
Excel Vers. ve Dili
Pro Plus 2021
251560
Öncelikle emekleriniz için, ve DLL konusunda göstermiş olduğunuz performanstan dolayı tebrik ederim. Çok faydalı bir çalışma.
DLL'e imkanı varsa PDF yazdırma ve opsiyonlarının (yatay/dikey, bir sayfada bir kaç sayfa gibi) eklenebilirse çok güzel olur. Bunun yanında image ile oluşturulan PDF leri OCR ile metne dönüştürme olayı da büyük bir ihtiyaç.

Table mevcut olmayan bir pdf te bu hatayı veriyor. Option>Error Trapping>Break on Unhandled Errors seçili olursa On Error Resume Next ile geçiyor ama Break on All Errors olursa hiç bir şekilde burayı geçmiyor.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,334
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Üstad, Win11 (64Bit) üzerinde Office 2010 (64 Bit) ile denedim, gayet güzel çalıştı. Eline sağlık...
Eyvallah... DLL' i AnyCpu olarak derlemiştim; içine hem 32, hem de 64 bit TLB gömerek her iki mimarideki Office ile çalıştığını test ettim. Günümüzdeki işletim sistemleri artık 64 bit olduğundan kullanıcıya sormadan her iki mimari için gerekli kayıtları atıyor. Bu arada IDL Generator kendime özel yazdığım bir TLB oluşturma aracıdır.

DLL'e imkanı varsa PDF yazdırma ve opsiyonlarının (yatay/dikey, bir sayfada bir kaç sayfa gibi) eklenebilirse çok güzel olur. Bunun yanında image ile oluşturulan PDF leri OCR ile metne dönüştürme olayı da büyük bir ihtiyaç.

Table mevcut olmayan bir pdf te bu hatayı veriyor. Option>Error Trapping>Break on Unhandled Errors seçili olursa On Error Resume Next ile geçiyor ama Break on All Errors olursa hiç bir şekilde burayı geçmiyor.
Veysel bey, geri bildirim için teşekkür ederim. Hem hata kaynağı, hem de önerdiğiniz ilave özellikler konusunda proje üzerinde çalışacağım. Kullandığım çekirdeklerde tam olarak ne işe yaradığını bilemediğim çok çok fazla özellikler var.

Bu arada C# ile geliştirmek veya değiştirmek isterseniz kaynak kodu da paylaşabilirim.

.
 
Katılım
24 Nisan 2005
Mesajlar
3,669
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Çok başarılı, emekleriniz için teşekkürler.
Excel 2016 64 Bit de sorunsuz çalıştı.
 
Katılım
6 Mart 2024
Mesajlar
80
Excel Vers. ve Dili
Excel 2013 TR & Excel 2016 TR
Merhaba
PdfVBALib.dll için çok teşekkürler, elinize sağlık güzel olmuş,
benim takoz da sorunsuz yüklendi ve çalıştı Win7 64bit + Excel 2013

Excel de PDF oluşturduktan sonra bazen başka bir PDF ile birleştirmem gerekiyordu
Online olarak bir siteden dosyaları yükleyip birleştiriyordum sanırım artık PdfVBALib.dll sayesinde buna gerek kalmıyacak ;)

PdfVBALib.dll yi kullanarak Ön hazırlık olarak bende bir iki kod yazdım

Kod:
Sub PDFparcala()
Dim Parcala1 As New PdfMerger
Dim Parcala2 As New PdfMerger
Dim ParcaFolder As String
ParcaFolder = ThisWorkbook.Path & "\PDFparcala\"
'Klasör varmı bak, yoksa olustur
KlasorKontrol ParcaFolder

Parcala1.AddPdf ThisWorkbook.Path & "\Zeki_Example.pdf", 1, 4 ' toplam 12 sayfanın ( ilk 4 sayfayı al ) (1-66)(67-133)(134-200)(201-267)
Parcala1.Merge ParcaFolder & "A.pdf" ' 4 sayfayı PDFparcala klasörüne A.pdf dosyası olarak kaydet (1-267)

Parcala2.AddPdf ThisWorkbook.Path & "\Zeki_Example.pdf", 2, 2 ' toplam 12 sayfanın ( 2. ve 3. sayfaları al) (67-133)(134-200)
Parcala2.Merge ParcaFolder & "B.pdf" ' 2 sayfayı PDFparcala klasörüne B.pdf dosyası olarak kaydet (67-200)

End Sub
Sub PdfBirlestir()
' ilk PDFparcala çalıştırın ki elimiz de 2 adet PDF dosyası olsun
Dim Birlestir As New PdfMerger
Dim BirlestirFolder As String
BirlestirFolder = ThisWorkbook.Path & "\PDFBirlestir\"
'Klasör varmı bak, yoksa olustur
KlasorKontrol BirlestirFolder

Birlestir.AddPdf ThisWorkbook.Path & "\PDFparcala\A.pdf", 2, 1 ' toplam 4 sayfa ( sadece 2. sayfayı al ) (67-133)
Birlestir.AddPdf ThisWorkbook.Path & "\PDFparcala\B.pdf", 2, 1 ' toplam 2 sayfa ( sadece 2. sayfayı al ) (134-200)

Birlestir.Merge BirlestirFolder & "AB.pdf" ' toplam 2 sayfa olacak Zeki_Example.pdf >> (67-133)(134-200)

End Sub
Sub KlasorKontrol(KlasorYolu As String)
    ' Kontrol etmek için FileSystemObject oluştur
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
   
    ' Klasör mevcut değilse, oluştur
    If Not fso.FolderExists(KlasorYolu) Then
        MkDir KlasorYolu
    End If
End Sub
Güzel bir arayüz yapabirsem sanırım kullanışlı(en azından benim için) bir Excel eklentisi (xlam) olacak.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,334
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
@Biolightant rica ederim. Veysel beyin önerileriyle sonraki versiyon daha güzel olacak. Mevcut durumdaki nesneler için de pek radikal olmayan bazı değişikler olacağını peşinen belirteyim. Örneğin koleksiyon indexleri '0' değil (Set objPage = doc.Pages(0)) '1' den (Set objPage = doc.Pages(1)) başlayacak. Bu, VBA kullanıcılarının alışık olduğu koleksiyon veya dizidir.

Win7 ile çalışabilmesi, sisteminizin güncel (.NET Framework 4.8.1) olmasından geliyor.

.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Gerekli bakimi yaparsan Win7 ve Office2010 her ikisi de candir...

.
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,623
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Zeki bey elinize sağlık, harikasınız.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,043
Excel Vers. ve Dili
Office 2013 İngilizce
Zeki Hocam çok teşekkürler,
güzel bir çalışma olmuş, emeğinize sağlık!
bu kodu çalıştırdığımda oluşturduğu klasörün içine;
ekli ekran görüntüsünde olduğu gibi sadece 2 görseli oluşturuyor, bir yerde hata mı yapıyorum.

Kod:
Public Sub PDF_Test
iyi pazarlar dilerim.
 

Ekli dosyalar

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,334
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Merhaba Tamer bey;

Pdf dosyasını açarsanız, 11. sayfasındaki resimlerden başka resim (2 adet) olmadığını görebilirsiniz.

Size de iyi hafta sonları dilerim.

.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,191
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
@Zeki Gürsoy,

Elinize emeğinize sağlık.. Paylaşamınız için teşekkürler..

Harika görünüyor..
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,043
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba Tamer bey;

Pdf dosyasını açarsanız, 11. sayfasındaki resimlerden başka resim (2 adet) olmadığını görebilirsiniz.

Size de iyi hafta sonları dilerim.

.
Zeki Hocam teşekkür ederim,
soruyu eksik sordum galiba; PDF dosyasındaki tablolar ve metinleri göremeyince bu amaçla sormuştum.

PDF dosyası içindeki tablolar alınamıyor muydu?

kusura bakmayın,
iyi çalışmalar.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,334
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
PDF dosyası içindeki tablolar alınamıyor muydu?
Üyelik tarihinizden bugüne kadar forumdan indirdiğiniz örnek dosyalardaki kaynak kodları hiç okumadan mı çalıştıştırıyorsunuz?

Haluk üstad doğru demiş; "Kod anlatılmaz, yazılır !"

.
 
Katılım
17 Haziran 2008
Mesajlar
1,871
Excel Vers. ve Dili
Microsoft Ofis Profesyonel 2019 x64 TR
Altın Üyelik Bitiş Tarihi
26-03-2020
Merhaba Zeki bey,

PdfVBALib.dll ile pdf dosyasını , 90° çevirebilecek, command buton kodu nasıl olmalıdır ?

Bu dll içindeki komutların bir listesi var mı, bir kaç command buton örneği gönderebilirmisiniz., ne , nasıl yapılır gibi. gerçi daha önceki mesajınızda paylaşmışsınız., Farklı örnekler olursa seviniriz.

Teşekkürler.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,334
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Sayfayı döndürebilecek özelliği ekleyebilirim. Save metodu ile özgün dosyayı değil de, döndürülmüş bir kopyasını kaydedersiniz.

Örnek kodlar early-bind (erken bağlama) olduğu için Object Browser'da sınıf ve üyeleri ile açıklamaları görebiliyorsunuz. Bir örneğin command button'u ya da modulü olmaz; nesnenin kullanımına ilişkin örnek olur. Ki, zaten bu versiyonda eklediğim özelliklerin tamamını kombine olarak içeren örnek hazırladığımı düşünüyorum. (Test aşamasında karşılaşmadığım sürpriz çalışma zamanı hatasını yok sayalım)

Projeye ilginiz ve öneriniz için teşekkür ederim.

.
 
Katılım
6 Mart 2024
Mesajlar
80
Excel Vers. ve Dili
Excel 2013 TR & Excel 2016 TR
Merhaba,

@Zeki Gürsoy geliştirdiği PdfVBALib.dll kullanarak PDFAraclar.xslm ( PDF Birleştirme ) yaptım.

Kodları incelemek isterseniz
PdfListBox un ColumnWidths 130 pt;0 pt değerini 50 pt;100 pt yapınızı öneririm

@k0081 önerisi olan PDF Döndürme olursa güzel olur
PDFAraclar.xslm ( PDF Birleştirme ) a o zaman küçük bir ön izleme ekranı eklenip
istenilen dosya Döndürülüp birleştirilebilir.

Save metodu ile özgün dosyayı değil de, döndürülmüş bir kopyasını kaydedersiniz
Bence kopyaya gerek yok gibi direk özgün dosya kaydedilebilir her seferinde 90° döndürülürse 4 turda orjinal konuma gelir nasılsa
 
Son düzenleme:
Katılım
6 Mart 2024
Mesajlar
80
Excel Vers. ve Dili
Excel 2013 TR & Excel 2016 TR
Merhaba,
Kodları kurcaladıkça güzel şeyler çıkıyor.
PDF dosyasını tek tek sayfalarına ayırmak için ufak bir çalışma

@Zeki Gürsoy bu arada 90° çevirebil me özelliğini sabırsızlıkla bekliyorum

Rich (BB code):
Sub PdfSayfalarTekTek()
    Dim PdfSayfalar As Object
    Dim ParcaFolder As String
    
    ' PdfSplitter nesnesini oluştur
    On Error GoTo ErrorHandler
    Set PdfSayfalar = New PdfSplitter
    On Error GoTo 0
    
    ParcaFolder = Environ("TEMP") & "\PDFsayfalar"
    
    ' TEMP klasöründe "PDFsayfalar" dosyası var mı kontrol et
    If Dir(ParcaFolder, vbDirectory) <> "" Then
        ' Klasör varsa içeriğini temizle
        On Error Resume Next
        Kill ParcaFolder & "\*.*"
        On Error GoTo 0
    Else
        ' Klasör yoksa oluştur
        MkDir ParcaFolder
    End If
    
    ' Pdf Dosyasını Tek Tek Sayfalarını ParcaFolder a kaydet
    ' Pdf zaten tek sayfaysa hiçbir işleme gerek yok
    PdfSayfalar.Split ThisWorkbook.Path & "\Zeki_Example.pdf", ParcaFolder, , 1, 1
    
    ' PdfSplitter nesnesini serbest bırak
    Set PdfSayfalar = Nothing
    
    ' Dosyaların bulunduğu klasörü aç
    Shell "explorer.exe " & ParcaFolder, vbNormalFocus

    Exit Sub
    
ErrorHandler:
    MsgBox "Lütfen [ PdfVBALib.dll ] yükleyin.", vbCritical, "Hata"
End Sub
 
Üst