← Kembali ke Blog
Download PDF View Only dari Google Drive (Free)

Download PDF View Only dari Google Drive (Free)

📅 09 May 2026🏷️ Tips and Tricks

Peringatan Penting: Gunakan script ini dengan bijak dan hanya untuk file yang memang Anda miliki izin aksesnya. Script ini bekerja dengan prinsip "screenshot" halaman demi halaman, bukan membuka proteksi file.

Pernahkah Anda mendapatkan file PDF dari Google Drive dalam mode View Only (hanya bisa dilihat) dan sangat membutuhkan salinannya untuk keperluan offline? Secara default, Google Drive memang bisa mencegah pengunduhan file PDF. Namun, ada satu trik teknis yang bisa digunakan: Browser Script.

Script yang akan kita bahas ini bekerja dengan mengambil screenshot setiap halaman PDF yang terbuka di preview Google Drive, lalu menggabungkannya kembali menjadi satu file PDF baru. Hasilnya kualitas gambarnya cukup baik karena mengambil dari kanvas asli halaman.

Persiapan Sebelum Memulai

  1. Buka file PDF di Google Drive.
  2. Klik tombol Preview.
  3. Di pojok kanan atas, klik menu tiga titik vertikal → pilih "Open in new window" (Buka di jendela baru). Ini penting agar script bisa mengakses konten dengan benar.
  4. Scroll halaman PDF hingga ke bagian paling bawah. Pastikan semua halaman sudah termuat seluruhnya.

Panduan Langkah demi Langkah

1. Buka Console Browser

  • Chrome/Edge (Windows): F12 atau Ctrl+Shift+I
  • Chrome/Edge (Mac): Cmd+Option+I
  • Firefox (Windows): F12
  • Firefox (Mac): Cmd+Option+I

Lalu klik tab Console.

2. Aktifkan "allow pasting" (Khusus Chrome)

Jika Anda menggunakan Chrome dan tidak bisa menempelkan kode di console, ketikkan teks berikut lalu tekan Enter:

allow pasting

3. Copy dan Jalankan Script

Copy kode JavaScript di bawah ini, paste di console browser, lalu tekan Enter:

(function () {
  console.log("Loading script ...");

  let script = document.createElement("script");
  script.onload = function () {
    const { jsPDF } = window.jspdf;

    // Generate a PDF from images with "blob:" sources.
    let pdf = null;
    let imgElements = document.getElementsByTagName("img");
    let validImgs = [];

    console.log("Scanning content ...");
    for (let i = 0; i < imgElements.length; i++) {
      let img = imgElements[i];

      // specific check for Google Drive blob images
      let checkURLString = "blob:https://drive.google.com/";
      if (img.src.substring(0, checkURLString.length) !== checkURLString) {
        continue;
      }

      validImgs.push(img);
    }

    console.log(`${validImgs.length} content found!`);
    console.log("Generating PDF file ...");

    for (let i = 0; i < validImgs.length; i++) {
      let img = validImgs[i];

      // Convert image to DataURL via Canvas
      let canvasElement = document.createElement("canvas");
      let con = canvasElement.getContext("2d");
      canvasElement.width = img.naturalWidth;
      canvasElement.height = img.naturalHeight;
      con.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight);
      let imgData = canvasElement.toDataURL();

      // Determine orientation and dimensions for THIS specific image
      let orientation = img.naturalWidth > img.naturalHeight ? "l" : "p";
      let pageWidth = img.naturalWidth;
      let pageHeight = img.naturalHeight;

      if (i === 0) {
        // Initialize PDF with the dimensions of the FIRST image
        pdf = new jsPDF({
          orientation: orientation,
          unit: "px",
          format: [pageWidth, pageHeight],
        });
      } else {
        // For subsequent images, add a new page with THAT image's specific dimensions
        pdf.addPage([pageWidth, pageHeight], orientation);
      }

      // Add the image to the current page
      pdf.addImage(imgData, "PNG", 0, 0, pageWidth, pageHeight, "", "SLOW");

      const percentages = Math.floor(((i + 1) / validImgs.length) * 100);
      console.log(`Processing content ${percentages}%`);
    }

    // Check if title contains .pdf in end of the title
    let title = document.querySelector('meta[itemprop="name"]')?.content || document.title || 'download.pdf';
    if ((title.split(".").pop() || "").toLowerCase() !== "pdf") {
      title = title + ".pdf";
    }

    // Download the generated PDF.
    console.log("Downloading PDF file ...");
    pdf.save(title, { returnPromise: true }).then(() => {
      document.body.removeChild(script);
      console.log("PDF downloaded!");
    });
  };

  // Load the jsPDF library using the trusted URL.
  let scriptURL = "https://unpkg.com/jspdf@latest/dist/jspdf.umd.min.js";
  let trustedURL;
  if (window.trustedTypes && trustedTypes.createPolicy) {
    const policy = trustedTypes.createPolicy("myPolicy", {
      createScriptURL: (input) => {
        return input;
      },
    });
    trustedURL = policy.createScriptURL(scriptURL);
  } else {
    trustedURL = scriptURL;
  }

  script.src = trustedURL;
  document.body.appendChild(script);
})();

Proses dan Hasil

  • Tunggu hingga proses selesai. Kecepatan proses tergantung pada:
    • Jumlah halaman PDF
    • Ukuran dan kompleksitas tiap halaman
  • File PDF akan otomatis terunduh dengan nama sesuai judul asli file (atau download.pdf jika tidak terdeteksi)

Keterbatasan dan Catatan Penting

1. Bukan "Crack" Proteksi - Script ini tidak membuka password atau menghapus pembatasan izin. Ia seperti "memotret" layar secara otomatis.

2. Kualitas - Hasilnya adalah PDF berbasis gambar (scan), bukan teks yang bisa di-copy.

3. Jumlah Halaman - Untuk PDF dengan ratusan halaman, proses bisa sangat berat dan memakan memori browser.

4. Jika Gagal - Pastikan Anda sudah scroll hingga akhir halaman (poin 4 di persiapan). Jika tidak, halaman yang belum termuat tidak akan terekam.

Output Console yang Diharapkan

Loading script ...
Scanning content ...
15 content found!
Generating PDF file ...
Processing content 6%
Processing content 13%
Processing content 20%
...
Processing content 100%
Downloading PDF file ...
PDF downloaded!

Sumber Referensi

Script ini merupakan hasil karya zavierferodova yang dipublikasikan di github.

Tips Tambahan

Tips: Untuk file PDF yang sangat besar, sebaiknya lakukan proses ini di komputer dengan RAM yang cukup (minimal 8GB) dan gunakan browser Chrome/Edge yang berbasis Chromium untuk performa terbaik.

Gunakan sesuai kebutuhan dan hormati hak cipta pemilik file.