Altbilgi içeriğine atla
PDF ARAçLARı

Node.js ve Puppeteer kullanarak HTML'yi PDF'ye Nasıl Dönüştürürüm

Bugünün dijital dünyasında, web sayfalarını veya HTML belgelerini PDF dosyalarına dönüştürme yeteneğine sahip olmak çok önemlidir. Bu, raporlar oluşturmak, faturalar hazırlamak veya bilgiyi daha sunulabilir bir formatta paylaşmak için yararlı olabilir. Bu blog yazısında, Google tarafından geliştirilen açık kaynaklı bir kütüphane olan Node.js ve Puppeteer kullanarak HTML sayfalarını PDF'ye nasıl dönüştüreceğimizi keşfedeceğiz.

Puppeteer'a Giriş

Puppeteer, geliştiricilerin genellikle Google Chrome veya Chromium gibi başsız tarayıcıları kontrol etmelerine ve web kazıma, ekran görüntüsü alma ve PDF oluşturma gibi çeşitli işlemleri gerçekleştirmelerine olanak tanıyan güçlü bir Node.js kütüphanesidir. Puppeteer, tarayıcıyla etkileşim kurmak için geniş bir API sunar, bu da onu HTML'den PDF'ye dönüştürmek için mükemmel bir seçim yapar.

Neden Puppeteer?

  • Kullanım kolaylığı: Puppeteer, başsız tarayıcılarla çalışmanın karmaşık yönlerini soyutlayan basit ve kullanıcı dostu bir API sunar.
  • Güçlü: Puppeteer, web sayfalarını manipüle etmek ve tarayıcı öğeleriyle etkileşim kurmak için geniş kapsamlı yetenekler sunar.
  • Ölçeklenebilir: Puppeteer ile PDF oluşturma işleminizi paralel olarak birden fazla tarayıcı örneği çalıştırarak kolayca ölçeklendirebilirsiniz.

Node.js Projenizi Kurma

Başlamadan önce, yeni bir Node.js projesi kurmanız gerekecek. Başlamak için bu adımları izleyin:

  1. Henüz yapmadıysanız Node.js'i yükleyin (onu Node.js web sitesinden indirebilirsiniz).
  2. Projeniz için yeni bir klasör oluşturun ve onu Visual Studio Code veya herhangi bir belirli kod düzenleyicisinde açın.
  3. Projeniz için yeni bir package.json dosyası oluşturmak için npm init çalıştırın. İstenilen bilgileri sağlamak için istemleri takip edin ve doldurun.

    Node.js'de HTML'i PDF'e Dönüştürme: Şekil 1

  4. npm install puppeteer çalıştırarak Puppeteer'i yükleyin.

    Node.js'de HTML'i PDF'e Dönüştürme: Şekil 2

Artık projemizi kurduğumuza göre, koda dalalım.

HTML Şablonunu Yüklemek ve PDF Dosyasına Dönüştürmek

Puppeteer kullanarak HTML şablonlarını bir PDF dosyasına dönüştürmek için bu adımları izleyin:

Klasörde 'HTML'den PDF'ye.js' adlı bir dosya oluşturun.

Puppeteer ve fs'yi İçe Aktarma

const puppeteer = require('puppeteer');
const fs = require('fs');

Kod, Chrome ve Chromium gibi başsız tarayıcıları kontrol etmek için çok yönlü bir araç olan puppeteer ve dosya sistemi işlemleri için dahili bir Node.js modülü olan fs içe aktarılmasıyla başlar. Puppeteer, HTML işleme, ekran görüntüsü alma ve PDF dosyaları oluşturma dahil olmak üzere geniş bir yelpazedeki web tabanlı görevleri otomatikleştirmenizi sağlar.

exportWebsiteAsPdf Fonksiyonunu Tanımlamak

async function exportWebsiteAsPdf(html, outputPath) {
  // Create a browser instance
  const browser = await puppeteer.launch({
    headless: true // Launches the browser in headless mode
  });

  // Create a new page
  const page = await browser.newPage();

  // Set the HTML content for the page, waiting for DOM content to load
  await page.setContent(html, { waitUntil: 'domcontentloaded' });

  // To reflect CSS used for screens instead of print
  await page.emulateMediaType('screen');

  // Download the PDF
  const PDF = await page.pdf({
    path: outputPath,
    margin: { top: '100px', right: '50px', bottom: '100px', left: '50px' },
    printBackground: true,
    format: 'A4',
  });

  // Close the browser instance
  await browser.close();

  return PDF;
}

exportWebsiteAsPdf işlevi, kod snippet'imizin çekirdeği olarak hizmet eder. Bu asenkron işlev, bir html dizesini ve bir outputPath giriş parametreleri olarak kabul eder ve bir PDF dosyası döndürür. İşlev aşağıdaki adımları uygular:

  1. Puppeteer kullanarak yeni bir başsız tarayıcı örneği başlatır.
  2. Yeni bir tarayıcı sayfası oluşturur.
  3. Sağlanan html dizeni sayfa içeriği olarak ayarlar ve DOM içeriğinin yüklenmesini bekler.
  4. Ekran için kullanılan CSS'yi uygulamak için 'ekran' medya türünü taklit eder ve baskıya özgü stiller yerine kullanır.
  5. Yüklenen HTML içeriğinden bir PDF dosyayı oluşturur, kenar boşluklarını, arka plan yazdırmayı ve format (A4) belirtir.
  6. Tarayıcı örneğini kapatır.
  7. Oluşturulan PDF dosyasını döndürür.

exportWebsiteAsPdf Fonksiyonunu Kullanmak

// Usage example
// Get HTML content from HTML file
const html = fs.readFileSync('test.html', 'utf-8');

// Convert the HTML content into a PDF and save it to the specified path
exportWebsiteAsPdf(html, 'result.pdf').then(() => {
  console.log('PDF created successfully.');
}).catch((error) => {
  console.error('Error creating PDF:', error);
});

Kodun son bölümü, exportWebsiteAsPdf işlevinin nasıl kullanılacağını gösterir. Aşağıdaki adımları uygularız:

  1. fs modülünün readFileSync yöntemini kullanarak bir HTML dosyasından HTML içeriğini okuyun.
  2. Yüklenen html dizeni ve istenen outputPath ile exportWebsiteAsPdf işlevini çağırın.
  3. Başarılı PDF oluşturma işlemini ele almak için bir .then bloğu kullanın ve konsola bir başarı mesajı yazdırın.
  4. HTML'den PDF'e dönüştürme işlemi sırasında oluşan hataları yönetmek için bir .catch bloğu kullanın ve konsola bir hata mesajı yazdırın.

Bu kod parçası, Node.js ve Puppeteer kullanarak bir HTML şablonunu PDF dosyasına nasıl dönüştüreceğinizi kapsamlı bir şekilde örnekler. Bu çözümü uygulayarak, çeşitli uygulamalar ve kullanıcıların ihtiyaçlarını karşılayan yüksek kaliteli PDF'ler üretebilirsiniz.

Node.js'de HTML'i PDF'e Dönüştürme: Şekil 3

URL'leri PDF Dosyalarına Dönüştürmek

HTML şablonlarını dönüştürmenin yanı sıra, Puppeteer ayrıca URL'leri doğrudan PDF dosyalarına dönüştürmenizi sağlar.

Puppeteer'ı İçe Aktarma

const puppeteer = require('puppeteer');

Kod, Chrome ve Chromium gibi başsız tarayıcıları kontrol etmek için güçlü bir araç olan Puppeteer kütüphanesini ithal ederek başlar. Puppeteer, HTML kodunuzu render etme, ekran görüntüsü alma ve bizim durumumuzda PDF dosyaları oluşturma dahil olmak üzere çeşitli web tabanlı görevleri otomatikleşmenizi sağlar.

exportWebsiteAsPdf Fonksiyonunu Tanımlamak

async function exportWebsiteAsPdf(websiteUrl, outputPath) {
  // Create a browser instance
  const browser = await puppeteer.launch({
    headless: true // Launches the browser in headless mode
  });

  // Create a new page
  const page = await browser.newPage();

  // Open the URL in the current page
  await page.goto(websiteUrl, { waitUntil: 'networkidle0' });

  // To reflect CSS used for screens instead of print
  await page.emulateMediaType('screen');

  // Download the PDF
  const PDF = await page.pdf({
    path: outputPath,
    margin: { top: '100px', right: '50px', bottom: '100px', left: '50px' },
    printBackground: true,
    format: 'A4',
  });

  // Close the browser instance
  await browser.close();

  return PDF;
}

exportWebsiteAsPdf işlevi, kod snippet'imizin çekirdeğidir. Bu asenkron işlev, bir websiteUrl ve bir outputPath giriş parametreleri olarak kabul eder ve bir PDF dosyası döndürür. İşlev aşağıdaki adımları uygular:

  1. Puppeteer kullanarak yeni bir başsız tarayıcı örneği başlatır.
  2. Yeni bir tarayıcı sayfası oluşturur.
  3. Sağlanan websiteUrl konumuna gider ve waitUntil seçeneğini networkidle0 olarak ayarlayarak ağın durgunlaşmasını bekler.
  4. Ekrana özgü CSS'nin uygulanmasını sağlamak için 'ekran' medya türünü taklit eder ve baskıya özgü stil kullanmaz.
  5. Yüklenen web sayfasını kenar boşlukları, arka plan baskısı ve format (A4) ile belirterek bir PDF dosyasına dönüştürür.
  6. Tarayıcı örneğini kapatır.
  7. Oluşturulan PDF dosyasını döner.

exportWebsiteAsPdf Fonksiyonunu Kullanmak

// Usage example
// Convert the URL content into a PDF and save it to the specified path
exportWebsiteAsPdf('https://ironpdf.com/', 'result.pdf').then(() => {
  console.log('PDF created successfully.');
}).catch((error) => {
  console.error('Error creating PDF:', error);
});

Kodun son bölümü, exportWebsiteAsPdf işlevinin nasıl kullanılacağını gösterir. Aşağıdaki adımları yürütürüz:

  1. İstenilen websiteUrl ve outputPath ile exportWebsiteAsPdf işlevini çağırın.
  2. Başarılı PDF oluşturma işlemine müdahale etmek için bir then bloğu kullanın. Bu blokta, konsola bir başarı mesajı kaydederiz.
  3. Web sitesinden PDF'e dönüştürme işlemi sırasında oluşan hataları ele almak için bir catch bloğu kullanın. Bir hata meydana gelirse, konsola hata mesajı kaydedilir.

Bu kod parçasını projelerinize entegre ederek, URL'leri kolayca yüksek kaliteli PDF dosyalarına dönüştürebilirsiniz.

Node.js'de HTML'i PDF'e Dönüştürme: Şekil 4

C# Geliştiricileri İçin En İyi HTML'den PDF'e Kütüphane

IronPDF'i Keşfedin, PDF dosyaları oluşturmak, düzenlemek ve içerik çıkarmak için kullanılan popüler bir .NET kütüphanesidir. HTML, metin, resimler ve mevcut PDF belgelerinden PDF oluşturmak için basit ve verimli bir çözüm sunar. IronPDF, .NET Core, .NET Framework ve .NET 5.0+ projelerini destekler, bu da onu çeşitli uygulamalar için esnek bir seçim yapar.

IronPDF'in Temel Özellikleri

IronPDF ile HTML'den PDF'e Dönüşüm: IronPDF, CSS de dahil olmak üzere HTML içeriğini PDF dosyalarına dönüştürmenizi sağlar. Bu özellik, web sayfalarından veya HTML şablonlarından piksel-mükemmel PDF belgeleri oluşturmanıza olanak tanır.

URL İşlemi: IronPDF, bir sunucudan doğrudan URL kullanarak web sayfalarına ulaşıp onları PDF dosyalarına çevirir, web içeriğini arşivlemeyi veya dinamik web sayfalarından raporlar oluşturmayı kolaylaştırır.

Metin, Resim ve PDF Birleşimi: IronPDF, metinleri, resimleri ve mevcut PDF dosyalarını tek bir PDF belgesinde birleştirmenizi sağlar. Bu özellik, birden fazla içerik kaynağıyla karmaşık belgeler yaratmak için özellikle faydalıdır.

PDF Manipülasyonu: IronPDF, mevcut PDF dosyalarını düzenlemek için sayfa ekleme veya çıkarma, meta verileri değiştirme, hatta PDF belgelerinden metin ve resimler çıkarma gibi araçlar sunar.

Sonuç

Sonuç olarak, PDF dosyaları üretmek ve işlemek birçok uygulamada yaygın bir gereksinimdir ve doğru araçlara sahip olmak çok önemlidir. Bu makalede sunulan çözümler — örneğin Puppeteer'u Node.js ile veya IronPDF'i .NET ile kullanmak — HTML içeriğini ve URL'leri profesyonel, yüksek kaliteli PDF belgelerine dönüştürmek için güçlü ve verimli yöntemler sunar.

Özellikle IronPDF, kapsamlı özellik setiyle öne çıkar, bu da onu .NET geliştiricileri için en iyi seçenek yapar. IronPDF, yeteneklerini deneyimlemenizi sağlayan ücretsiz bir deneme sunar.

Kullanıcılar Iron Suite paketinden de faydalanabilirler; bu, beş profesyonel .NET kütüphanesini — IronXL, IronPDF, IronOCR ve daha fazlasını — içerir.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında lisans derecesine sahiptir (Carleton Üniversitesi) ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirme üzerine uzmanlaşmıştır. Kullanıcı dostu ve estetik açıdan hoş arayüzler tasarlamaya tutkuyla bağlı olan Curtis, modern çerç...

Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara