• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

PDF -> Dosya -> Özellikler - Veri Çekme Hk.

  • Konbuyu başlatan Konbuyu başlatan AScru
  • Başlangıç tarihi Başlangıç tarihi
Katılım
24 Kasım 2008
Mesajlar
14
Excel Vers. ve Dili
Office2007 Tr
Merhaba,

14.340 adet tek sayfadan oluşan PDF dosyalarımız bulunmakta, fakat bunların sayfa boyutlarını excel'de toplu olarak görebilir miyim?

Görmem gereken alan;
PDF -> Dosya -> Özellikler -> Açıklama Alanındaki Dosya Adı ve Sayfa Boyutu


Saygılarımla,
 

Ekli dosyalar

İnceleyiniz.

 
Aşağıdaki kod bu işi yapacaktır....

Kodun olduğu Excel dosyasını PDF'lerin olduğu klasöre yerleştirin, sonra "Test" isimli makroyu çalıştırın.....

C#:
Sub Test()
    Dim MyPath As String, MyFile As String
    Dim i As Long
    MyPath = ThisWorkbook.Path
    MyFile = Dir(MyPath & Application.PathSeparator & "*.pdf", vbDirectory)
    Range("A:B").ClearContents
    Range("A1:B1") = Array("File Name", "Pages")
    Range("A1:B1").Font.Bold = True
    i = 1
    Do While MyFile <> ""
        i = i + 1
        Cells(i, 1) = MyFile
        Cells(i, 2) = GetPageSize(MyPath & Application.PathSeparator & MyFile)
        MyFile = Dir
    Loop
    Columns("A:B").AutoFit
    MsgBox "Toplam " & i - 1 & " PDF dosyası bulundu!" & vbCrLf _
           & "Dosya isimleri ve sayfa boyutları " _
           & ActiveSheet.Name & " sayfasına yazıldı...", vbInformation, "Report..."
End Sub
'
Function GetPageSize(PDF_File As String)
'   Haluk 17/09/2021
'   sa4truss@gmail.com
'   https://excelhaluk.blogspot.com/

    Dim FileNum As Long
    Dim strRetVal As String
    Dim RegExp As Object, temp As String
    
    Set RegExp = CreateObject("VBscript.RegExp")
    RegExp.Global = False
    
'    RegExp.Pattern = "(MediaBox|BBox|CropBox)\[([^\]\[]+)\]"
    RegExp.Pattern = "(MediaBox\[)([^\]\[]+)\]"
    
    FileNum = FreeFile
    Open PDF_File For Binary As #FileNum
        strRetVal = Space(LOF(FileNum))
        Get #FileNum, , strRetVal
    Close #FileNum
    
    
    If RegExp.Test(strRetVal) = True Then
        temp = Trim(RegExp.Execute(strRetVal)(0).SubMatches(1))
        GetPageSize = Round(Val(Split(temp, " ")(2)) / 72 * 2.54, 0) & " cm X " & Round(Val(Split(temp, " ")(3)) / 72 * 2.54, 0) & " cm"
    Else
        GetPageSize = "#N/A cm X #N/A cm"
    End If
 End Function






.
 
Son düzenleme:
Haluk bey, ben de denedim kodlarınız kendi bilgisayarımda.
Aşağıdaki satırda Invalid procedure call or argument hatası veriyor. Sebebini bulamadım.
Denediğim pdf ler kendi iblgisayarımdaki pdf dosyaları.

temp = Replace(Replace(RegExp.Execute(strRetVal)(0), "MediaBox[", ""), "]", "")


Resimde de görüldüğü üzere pdf özelliklerine bakınca sayfa boyutlarını göremiyorum.
Bendeki pdf lerin sayfa sayısı, sayfa boyutu, Klasör Yolunu, Dosya Boyutu özelliklerini nasıl alabilirim ?

230159
 
Ö. Faruk Bey, Windows7'de sayfa sayısını ben de özellikler penceresinden göremediğim için VBA ile çözüm yolu geliştirdim.

Benim bilgisayarda kod çalışıyor, sizde hata veren PDF'leri buraya eklerseniz üzerinde deneme yapayım ben de....

.
 
Valla bende çalışıyor....

3 No'lu mesajdaki kodda bir geliştirme yapmıştım, tekrar deneseniz ?

Fiziki olarak da ölçtüm, sizin PDF'in sayfa genişliği 21 cm.


Capture.PNG
 
Win10 la ilgili bir durum o zaman. Ben halen göremiyorum.
 
VBA editörde "Missing Reference" varsa, bazen öyle şeyler olabiliyor...

.
 
@ÖmerFaruk ;

3 No'lu mesajdaki kodu revize ettim, tekrar deneyebilir misiniz?

.
 
Kodları denedim değişen bir şey yok.
"Missing Reference" hatası görülmüyor.
Yinede sizdeki Referensların görüntüsü paylaşırmısınız.
 
Ekstra hiçbir referans yok ...

Sizde hata mesajı yine aynısı mı?



Capture.PNG
.
 
Merhaba,
Haluk bey sanırım sayfa sayısı 2 ve üzeri olunca o hatayı veriyor.
 
Necati Bey; 1 sayfada olsa, 75 sayfa da olsa bende çalışıyor.....

Sizde de çalışmadı mı?

.
 
Bir sayfalı dosyada çalışıyor. Çok sayfalıda aynı hatayı veriyor. Çok sayfalının ilk sayfasını dışarı alıp onun üzerinde denedim, çalıştı.
 
İlginç doğrusu..... bende hiç problem olmazken sizde nasıl oluyor anlamadım.

Aklıma gelen tek şey; Windows sistem ayarları..... Bende Windows ve bütün programlar İngilizce. Lokal olarak "Türkiye", saat biçimi, ondalık ayraçlar vs. de "Türkiye" için.

Bir de şunu yapabilirmisiniz? VBA kodunun yaptığını manuel yapalım.....

Sorunlu olduğunu söylediğiniz PDF dosyalarından birinin uzantısını "pdf" yerine "txt" yapın ve Notepad ile açın. Sonra, "Find" (Bul) komutuyla "MediaBox" kelimesini aratıp, aşağıdaki resimde belirtilen yeri bulduktan sonra ekran görüntüsünü paylaşırmısınız?





.
 
Sayfa sayısı tek olan ve çok olan başka dosyalarda da deneme yaptım. Problem sayfa sayısı değilmiş.
 
Necati Bey, sorunlu dosyaların birinde 16 No'lu mesajda dediğimi yapabilir misiniz?

.
 
Peki, çalıştığını söylediğiniz PDF de dener misiniz?

.
 
Geri
Üst