Apakah ada alat yang bisa saya jalankan di arsip PDF (semua direktori) dan akhirnya daftar / mengidentifikasi PDF yang korup / tidak valid?
Saya memiliki ratusan file PDF (terkait dengan dokumentasi dll.) Di komputer saya (mesin Windows), dan sangat sering saya menerima / harus mengirim lusinan PDF melalui email. Sekarang sudah menjadi rutinitas normal bahwa PDF yang saya terima atau kirim rusak. Ini terkadang menimbulkan masalah serius, ketika file sumber (mis. File Word atau file Tex hilang / tidak tersedia secara instan).
Memeriksa ribuan PDF ini tidak mungkin dilakukan dalam waktu yang terbatas, jadi saya mencari alat yang dapat saya jalankan sekali dan memindai semua PDF (dalam direktori dan sub-direktori), dan akhirnya saya mendapatkan daftar file-file yang harus saya ulangi. -membuat. Sampai sekarang, sepertinya tidak ada alat seperti itu.
sumber
Jawaban:
Sangat mudah untuk memeriksa apakah file PDF valid, dengan menggunakan PDFtk. Sebuah GUI gratis bagi pdftk tersedia dari PDF Labs . Ketika Anda menjalankan alat ini, Anda dapat memuat PDF sebanyak yang Anda inginkan, dari banyak direktori (dengan menggunakan tombol Tambah file), dan kemudian akan mulai mengakses halaman dalam file PDF ini, dengan sangat cepat.
Jika ada file di antara PDF yang dipilih adalah PDF yang tidak valid, utilitas ini akan menampilkan pesan tentang kesalahan, dan akan menghapusnya secara otomatis dari jendela pilihan.
Karenanya Anda dapat menghemat banyak waktu menggunakan prosedur ini dengan PDFtk. Selain itu, jika Anda memiliki CPU multicore, Anda dapat menjalankan beberapa instance dari utilitas ini dan memasukkan ratusan PDF di setiap instance.
Saya menggunakan perangkat lunak ini sejak 1 tahun terakhir, dan ini adalah alat PDF paling praktis yang pernah saya gunakan.
sumber
cd
masukFolderContainingPDFs
dan menjalankan perintah berikut dalam shell Windows, dan itu akan menandai file PDF yang tidak valid dalam file log:FORFILES /S /M *.pdf /C "cmd /c echo. & echo @path @fname & D:\XPDF_3.04\bin64\pdfinfo.exe @file" 1>text.txt 2>&1
Saya telah menggunakan "pdfinfo.exe" dari paket xpdfbin-win dan cpdf.exe untuk memeriksa file PDF untuk korupsi, tetapi tidak ingin melibatkan biner jika tidak diperlukan.
Saya membaca bahwa format PDF yang lebih baru memiliki katalog data xml yang dapat dibaca di akhir, jadi saya membuka PDF dengan windows NOTEPAD.exe biasa dan menggulir ke bawah melewati data yang tidak dapat dibaca sampai akhir dan melihat beberapa kunci yang dapat dibaca. Saya hanya membutuhkan satu kunci, tetapi memilih untuk menggunakan CreationDate dan ModDate.
Skrip Powershell (PS) berikut ini akan memeriksa SEMUA file PDF di direktori saat ini dan mengeluarkan status masing-masing ke dalam file teks (! RESULTS.log). Butuh sekitar 2 menit untuk menjalankan ini terhadap 35.000 file PDF. Saya mencoba menambahkan komentar untuk mereka yang baru mengenal PS. Semoga ini menghemat waktu seseorang. Mungkin ada cara yang lebih baik untuk melakukan ini, tetapi ini berfungsi dengan sempurna untuk tujuan saya dan menangani kesalahan secara diam-diam. Anda mungkin perlu mendefinisikan yang berikut di awal: $ ErrorActionPreference = "SilentlyContinue" jika Anda melihat kesalahan di layar.
Salin yang berikut ke dalam file teks dan beri nama dengan tepat (mis: CheckPDF.ps1) atau buka PS dan telusuri ke direktori yang berisi file PDF untuk memeriksa dan menempelkannya di konsol.
sumber
Mengikuti jejak @ n0nuf, saya menulis skrip batch untuk memeriksa semua PDF dalam folder tertentu dengan pdfinfo dan mendorongnya melalui cpdf jika rusak sebagai upaya untuk memperbaikinya:
Atau sama dengan skrip bash:
PDF yang rusak akan dipindahkan ke subfolder \ bak dan PDF yang dibuat ulang mendapatkan akhiran _.pdf (yang tidak sempurna, tetapi cukup baik untuk saya). CATATAN: PDF yang dibuat ulang mengandung kesalahan yang lebih sedikit dan harus dapat dilihat dengan penampil PDF biasa. Tapi ini tidak berarti Anda mendapatkan semua konten Anda kembali. Konten yang tidak dapat dikembalikan mengarah ke halaman kosong.
Saya juga mencoba hal yang sama dengan JHOVE (Identifikasi format file sumber terbuka, alat validasi & karakterisasi) seperti yang disarankan oleh @kraftydevil di sini: Periksa apakah file PDF rusak menggunakan baris perintah di Linux dan sekarang dapat mengkonfirmasi ini juga merupakan pendekatan yang valid. (Pertama saya kurang sukses. Tapi kemudian saya perhatikan saya tidak menangani hasil JHOVE dengan benar.)
Untuk menguji kedua pendekatan saya menghapus dan mengubah bagian acak dari PDF dengan editor teks (aliran dihapus, sehingga halaman gagal membuat di penampil PDF saya, mengubah Tag PDF, dan menggeser beberapa bit). Hasilnya adalah: Baik pdfinfo dan JHOVE dapat menemukan file yang rusak dengan benar (JHOVE bahkan lebih sensitif dalam beberapa kasus).
Dan di sini adalah skrip yang setara untuk JHOVE:
sumber