2016-04-01 20 views
2

perl'u kullanarak, bir dosyanın PDF olup olmadığını belirlemenin en iyi yolu nedir?Dosyanın perl içinde bir PDF olup olmadığını belirleme

Görünüşe göre, tüm PDFs, %PDF ile başlar. Bu yanıt hakkındaki bakınız: https://stackoverflow.com/a/941962/327528

+0

Saptama ne kadar iyi olmalı? Sadece ortak PDF dosyalarını beyaz listelemek mi yoksa siyah olarak listelenebilecek tüm dosyaları algılamak mı gerekiyor? Yasal PDF dosyaları aslında%% PDF dizesinden önce veri içerebileceğinden ve bunun bir resim vb. PDF olduğunu düşünmediğiniz için sizi kandırabildiğinden, ikincisi çok daha zordur. –

+0

* Görünüşe göre, tüm PDF'ler% PDF * ile başlamıyor - tüm * geçerli * pdfs (belirtime göre) "% PDF-1" ile başlıyor. Bazı pdf görüntüleyenler de geçersiz pdfs'yi kabul ediyorlar ve bu yüzden farklı bir izlenim bırakıyorlar. – mkl

cevap

0

modül PDF::ParseIsaPDF dosyası ayrıştırılır ve bir PDF dosyasıdır edilip edilemeyeceğini

İade gerçek, yöntem çağrısında bulundu.

+0

PDF :: Parse :: IsaPDF yalnızca dosyanın "% PDF" ile başlayıp başlamadığını kontrol eder. – cecukemon

1

PDF'yi tespit etmek zor değildir, ancak dikkat edilmesi gereken bazı köşe durumları vardır.

  1. Tüm uyumlu PDF'ler, dosyanın uygun olduğu PDF belirtimini tanımlayan bir satırlık üstbilgi içerir. Genellikle N% 0 ile 7 arasında bir sayıdır. Burada N, 0 ile 7 arasında bir rakamdır.
    • PDF Referansının üçüncü baskısında, Acrobat görüntüleyicisinin yalnızca başlığın yalnızca ilk 1024 bayt içinde görünmesini gerektiren bir uygulama notu vardır. dosya. (Bir iş dosyası önekinin bir PDF dosyasının başlangıcına eklendiği bazı durumlarda gördüm, bu yüzden '% PDF-1.' Dosyanın ilk yedi baytı değildi)
    • Aşağıdaki uygulama notu üçüncü baskı (PDF 1.4) durumları: Acrobat izleyicileri de formun bir üstbilgisini kabul edecektir:%! PS-Adobe-Nn PDF-Mm, ancak bunun ISO32000: 2008 (PDF 1.7) spesifikasyonunun bir parçası olmadığını unutmayın.
    • Dosya% PDF-1.N ile hemen başlamazsa, dikkatli olun, çünkü bir PDF içeren bir zip dosyasının yanlışlıkla PDF olarak tanımlandığı bir durumda gördüm çünkü gömülü dosyanın bu bölümü değildi ' t sıkıştırılmış. PDF dosya fragmanı için bir kontrol iyi bir fikirdir.
  2. PDF sonu '%% EOF' olan bir satır içerir, PDF Referans
    • üçüncü baskı Acrobat izleyici %% EOF işaretleyici göründüğünü ifade gerektirir bir uygulama notu vardır bir dosyanın son 1024 baytında.
    • %% EOF'un iki satırında 'startxref' belirteci olmalı ve aralarındaki çizgi, dosyanın başlangıcından son çapraz başvuru tablosuna bayt ofseti için bir sayı olmalıdır. Bir bayt tampon içine dosyasının ilk ve son 1kb okunan Özetle

, onlar olması gerekiyordu yerde alakalı tanımlayan bayt dize belirteçleri yaklaşık olduklarını kontrol edin ve daha sonra ise sahip Elinizde bir PDF dosyasına sahip olduğunuza dair makul bir beklenti.

İlgili konular