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:
- Henüz yapmadıysanız Node.js'i yükleyin (onu Node.js web sitesinden indirebilirsiniz).
- Projeniz için yeni bir klasör oluşturun ve onu Visual Studio Code veya herhangi bir belirli kod düzenleyicisinde açın.
-
Projeniz için yeni bir
package.jsondosyası oluşturmak içinnpm initçalıştırın. İstenilen bilgileri sağlamak için istemleri takip edin ve doldurun.
-
npm install puppeteerçalıştırarak Puppeteer'i yükleyin.
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:
- Puppeteer kullanarak yeni bir başsız tarayıcı örneği başlatır.
- Yeni bir tarayıcı sayfası oluşturur.
- Sağlanan
htmldizeni sayfa içeriği olarak ayarlar ve DOM içeriğinin yüklenmesini bekler. - 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.
- Yüklenen HTML içeriğinden bir PDF dosyayı oluşturur, kenar boşluklarını, arka plan yazdırmayı ve format (A4) belirtir.
- Tarayıcı örneğini kapatır.
- 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:
fsmodülününreadFileSyncyöntemini kullanarak bir HTML dosyasından HTML içeriğini okuyun.- Yüklenen
htmldizeni ve istenenoutputPathileexportWebsiteAsPdfişlevini çağırın. - Başarılı PDF oluşturma işlemini ele almak için bir
.thenbloğu kullanın ve konsola bir başarı mesajı yazdırın. - HTML'den PDF'e dönüştürme işlemi sırasında oluşan hataları yönetmek için bir
.catchbloğ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.

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:
- Puppeteer kullanarak yeni bir başsız tarayıcı örneği başlatır.
- Yeni bir tarayıcı sayfası oluşturur.
- Sağlanan
websiteUrlkonumuna gider vewaitUntilseçeneğininetworkidle0olarak ayarlayarak ağın durgunlaşmasını bekler. - Ekrana özgü CSS'nin uygulanmasını sağlamak için 'ekran' medya türünü taklit eder ve baskıya özgü stil kullanmaz.
- 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.
- Tarayıcı örneğini kapatır.
- 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:
- İstenilen
websiteUrlveoutputPathileexportWebsiteAsPdfişlevini çağırın. - Başarılı PDF oluşturma işlemine müdahale etmek için bir
thenbloğu kullanın. Bu blokta, konsola bir başarı mesajı kaydederiz. - Web sitesinden PDF'e dönüştürme işlemi sırasında oluşan hataları ele almak için bir
catchbloğ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.

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.

