Cek Broken Link pada File PDF dengan PyPDF2 dan Google Sheets
Latar Belakang
Kadang diperlukan juga, untuk mengecek hyperlink yang terdapat dalam dokumen PDF, apakah link-link tersebut valid, mengarah pada halaman yang tersedia atau tidak.
Contohnya dokumen PDF akreditasi yang diupload dan akan dibaca oleh asesor.
Dokumen seperti ini perlu dipastikan bahwa seluruh hyperlink-nya valid, sebab jika asesor mencoba dan menemukan invalid link, dapat berpotensi pada pengurangan nilai.
Disclaimer
Penulis sebenarnya tidak suka Python, namun karena belum dapat membuat library PDF Reader sendiri, maka mohon maaf penulis tetap menggunkan PyPDF2, untuk mempercepat pekerjaan saja.
Langkah
Pertama-tama, letakkan file extract Hyperlink.py dan PDF yang akan di cek hyperlink-nya dalam satu folder. Dalam contoh posting ini, file PDF yang akan di cek bernama SURVEYLANCE_LED A-B_PSSI (1).pdf.
Lalu tuliskan script Python di bawah ini, pada file extract Hyperlink.py.
Kode extract Hyperlink.py
import PyPDF2 import urllib.request as urllib2 PDFFile = open("SURVEYLANCE_LED A-B_PSSI (1).pdf",'rb') PDF = PyPDF2.PdfFileReader(PDFFile) pages = PDF.getNumPages() key = '/Annots' uri = '/URI' ank = '/A' for page in range(pages): pageSliced = PDF.getPage(page) pageObject = pageSliced.getObject() if key in pageObject.keys(): ann = pageObject[key] i=-1; for a in ann: i+=1; u = a.getObject() if ank in u: if uri in u[ank].keys(): print((page+1)," ",i," ",u[ank][uri])
Sesuaikan nama file PDF yang akan di extract hyperlinknya dan run module tersebut.
Jika berhasil, running akan menghasilkan nomor halaman, urutan link berdasarkan halaman (mulai dari nol) dan link itu sendiri, pada tiap link yang ditemukan seperti gambar di bawah ini:
Selanjutnya siapkan file Google Sheets dengan nama Broken Link, yang terdiri dari Sheet Broken Link dan Ambil. Di mana template file ini dapat didownload pada link Template Broken Link.
Kemudian tambahkan kode Apps Script berikut melalui menu Extensions-Apps Script. Nama Project dapat diubah menjadi Check Broken Link, atau sesuai keinginan.
Kode Apps Script
function getStatus(url) { var options = { 'muteHttpExceptions': true, 'followRedirects': false }; var url_trimmed = url.trim(); var response = UrlFetchApp.fetch(url_trimmed, options); return response.getResponseCode(); }
Lalu copy hasil run module Python pada langkah sebelumnya, dan paste Value Only mulai kolom A baris kedua.
Setelah itu seleksi data di kolom A di atas, pilih menu Data-Split Text to Column untuk memisahkan data tersebut menjadi tiga kolom.
Begitu kolom B terisi, maka fungsi getStatus pada tiap baris kolom D, akan mencoba mengakses link yang diberikan, dan mengembalikan hasil berupa kode HTTP Status.
Kode HTTP Status yang dimaksud adalah seperti:
- 200 OK
- 301 Moved Permanently
- 302 Found
- 400 Client Error
- 401 Unauthorized
- 403 Forbidden
- 404 Not Found
- 500 Internal Server Error
Untuk lebih jelasnya, langkah-langkah di atas dapat dilihat pada video dibawah ini:
Komentar
Posting Komentar