JavaScript'te PDF Dosyaları Nasıl Oluşturulur
Belge paylaşım alanında, Adobe tarafından öncülük edilen Taşınabilir Belge Biçimi (PDF), metin zenginliği ve görsel çekiciliği olan içeriğin bütünlüğünü koruma konusunda kritik bir rol oynar. Çevrimiçi bir PDF dosyasına erişmek genellikle özel bir program gerektirir. Günümüzün dijital ortamında, PDF dosyaları çeşitli önemli yayınlar için vazgeçilmez hale gelmiştir. Birçok işletme, profesyonel belgeler ve faturalara oluşturmak için PDF dosyalarına güvenmektedir. Ayrıca, geliştiriciler genellikle belirli müşteri gereksinimlerini karşılamak için PDF oluşturma kütüphanelerinden yararlanır. PDF'leri oluşturma süreci, modern kütüphanelerin ortaya çıkmasıyla kolaylaştırılmıştır. PDF oluşturmayı içeren bir proje için en uygun kütüphaneyi seçerken, sorunsuz entegrasyon ve en iyi performansı sağlamak için yapım, okuma ve dönüştürme yetenekleri gibi faktörleri dikkate almak önemlidir.
JavaScript Kütüphaneleri
Örneğin, müşterinin fatura PDF'sini zahmetsizce indirip yazdırabilmesi senaryosunu düşünelim. Ayrıca, faturanın kesin düzenini korumak ve kusursuz baskı kalitesini sağlamak bizim için hayati önem taşır.
Bu bölümde, belge oluşturma ve dönüştürme süreçlerini verimli ve doğru bir şekilde gerçekleştirmek için bize esnek araçlar sağlayan, HTML'den PDF belgelerine dönüştürme ve oluşturma konusunda uzmanlaşmış bir dizi saygın JavaScript kütüphanesini inceleyeceğiz.
1. PDFKit
PDFKit, geniş JavaScript kütüphane ekosistemine ilk Giren PDF kütüphanelerinden biri olarak geliştirilmiştir. 2012'deki ilk sürümünden bu yana büyük ölçüde popülerlik kazanmış ve 2021 itibarıyla hala düzenli güncellemeler almaktadır.
Webpack kullanarak, PDFKit hem Node kütüphanesi hem de web tarayıcıları için destek sağlar, özel fontlar ve resim ekleme desteklenmektedir.
Ancak, karşılaştırmamızda göreceğimiz gibi, bazı PDF kütüphaneleri etkili bir şekilde sadece PDFKit sarmalayıcılarıdır ve belki de PDFKit'ten biraz daha kolay kullanılabilir.
PDFKit için yüksek seviyede bir API yoktur. Dokümantasyon genellikle zorlayıcıdır. Almak bir süre alışmak gerekir, ancak bekleyeceğiniz gibi, JavaScript kullanarak PDF üretmenin her zaman en kolay iş olmadığını görebilirsiniz.
// Requiring the necessary modules for file system and PDF document creation.
const fs = require('fs');
const PDFDocument = require('pdfkit');
// Create a new PDF document instance
const doc = new PDFDocument();
// Add text content to the PDF document
doc.text('Hello world!');
// Define the output file location and start writing the PDF content to it
doc.pipe(fs.createWriteStream('Demo.pdf'));
// Finalize the PDF file
doc.end();// Requiring the necessary modules for file system and PDF document creation.
const fs = require('fs');
const PDFDocument = require('pdfkit');
// Create a new PDF document instance
const doc = new PDFDocument();
// Add text content to the PDF document
doc.text('Hello world!');
// Define the output file location and start writing the PDF content to it
doc.pipe(fs.createWriteStream('Demo.pdf'));
// Finalize the PDF file
doc.end();2. pdfmake
Bir şey oluşturmak için geleneksel zorunlu yöntemi kullanan PDFKit'in aksine, pdfmake bildirimci bir yaklaşım kullanır. Sonuç olarak, pdfmake kütüphanesini kullanmak, belirli bir sonuca nasıl ulaşılacağını öğrenmek yerine PDF üretiminin amaçlanan işlevselliğine odaklanmayı daha basit hale getirir.
Belirli çözümlerin umut verici görünmesine rağmen, kusursuz olmayabileceğini unutmamak çok önemlidir. Bunun bir örneği, Webpack kullanırken, pdfmake ile özel yazı tiplerini entegre etmenin potansiyel olarak sorunlara yol açabilmesidir. Ne yazık ki, bu özel sorun hakkında çevrimiçi belgeler sınırlıdır. Ancak, Webpack kullanmıyorsanız, Git deposunu kolayca kopyalayabilir ve yazı tipi ekleme komut dosyasını çalıştırarak özel yazı tipi entegrasyonu ile ilgili olası engelleri aşabilirsiniz.
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.56/pdfmake.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.56/vfs_fonts.js"></script>
</head>
<body>
<script type="text/javascript">
// Function to create and print a PDF document
function CreatePdf() {
// Define document content and styles
var docDefinition = {
content: [
{ text: "Hello world" } // Text content to be included in the PDF
],
defaultStyle: {}
};
// Create and print the PDF using pdfMake library
pdfMake.createPdf(docDefinition).print();
}
</script>
<button onclick="CreatePdf()">Print pdf</button>
</body>
</html><!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.56/pdfmake.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.56/vfs_fonts.js"></script>
</head>
<body>
<script type="text/javascript">
// Function to create and print a PDF document
function CreatePdf() {
// Define document content and styles
var docDefinition = {
content: [
{ text: "Hello world" } // Text content to be included in the PDF
],
defaultStyle: {}
};
// Create and print the PDF using pdfMake library
pdfMake.createPdf(docDefinition).print();
}
</script>
<button onclick="CreatePdf()">Print pdf</button>
</body>
</html>
3. IronPDF
IronPDF, geliştiricilerin PDF belgelerini oluşturmasını, göz atmasını ve düzenlemesini kolaylaştırmak için oluşturulmuştur. Güçlü bir PDF dönüştürücü olarak işlev görür ve PDF dosyalarını oluşturma, düzenleme ve işleme için bir temel API sunar.
IronPDF for Node.js, PDF belgelerini programatik olarak oluşturma ve özelleştirme sürecini basitleştirir. Yüksek performanslı belge işleme kütüphanelerinin güvenilir bir sağlayıcısı olan Iron Software tarafından geliştirilmiştir, IronPDF, Node.js ortamlarında PDF oluşturma için sağlam bir çözüm sunar. Node.js projeleriyle sorunsuz bir şekilde entegre olarak, geliştiricilere PDF'leri kolayca oluşturmak, biçimlendirmek ve düzenlemek için güçlü araçlar sunar.
IronPDF kütüphanesi, yeni veya mevcut PDF belgelerinde sayfaları bölme ve birleştirme, mevcut PDF dosyalarını okuma ve düzenleme, PDF dosyalarından resim çıkartma, PDF dosyalarına metin, grafik, yer imleri, filigranlar, başlıklar ve altbilgiler ekleme gibi birçok özelliği içerir ve Acrobat Reader'a ihtiyaç yoktur. CSS ve CSS medya dosyalarından PDF belgeleri üretilebilir. IronPDF kullanıcıların hem yeni hem de önceden var olan PDF formlarını oluşturmasına, yüklemesine ve güncellemesine olanak tanır.
IronPDF for Node.js'nin Temel Özellikleri:
- Çok Yönlü PDF Üretimi: IronPDF ile geliştiriciler, HTML, CSS, JavaScript, resimler ve diğer dosya türleri dahil olmak üzere çeşitli kaynaklardan PDF'ler oluşturabilir. Bu esneklik, belirli gereksinimlere göre dinamik ve görsel olarak çekici PDF belgeleri oluşturulmasına olanak tanır.
- Gelişmiş Belge Özelleştirmesi: IronPDF, geliştiricilere başlıklar, altbilgiler, ekler, dijital imzalar, filigranlar ve yer imleri gibi özelliklerle PDF belgelerini geliştirme imkanı sunar. Bu, zengin içeriğe sahip ve etkileşimli unsurlarla profesyonel kalitede PDF'lerin oluşturulmasına olanak tanır.
- Güvenlik Özellikleri: IronPDF, PDF'leri yetkisiz erişimden korumak için sağlam güvenlik özellikleri sunar. Geliştiriciler, PDF belgelerinde yer alan hassas bilgileri korumak için parola, dijital imzalar, meta veriler ve diğer güvenlik ayarları gibi güvenlik önlemleri uygulayabilir.
- Optimize Edilmiş Performans: IronPDF, tam çoklu iş parçacığı ve eşzamanlı destek içeren optimize edilmiş performans için tasarlanmıştır. Bu, PDF oluşturmanın verimli olmasını sağlar ve performansın çok önemli olduğu yerlerde kullanıma uygundur.
- Kapsamlı Özellik Seti: PDF belgelerini oluşturma, biçimlendirme ve düzenleme için 50'den fazla özellikle IronPDF, PDF ile ilgili tüm görevler için kapsamlı bir çözüm sunar. Temel belge oluşturma işlemlerinden gelişmiş özelleştirme ve güvenlik çözümlerine kadar, IronPDF, geliştiricilerin ihtiyaçlarını karşılamak için geniş bir yetenek yelpazesi sunar.
Aşağıdaki kod örneği, JavaScript kullanarak HTML'yi pikselle tam örtüşen bir PDF dosyasına nasıl dönüştüreceğinizi gösterir:
import { PdfDocument } from "@ironsoftware/ironpdf";
(async () => {
// HTML content containing JavaScript to be executed upon rendering
const htmlWithJavaScript = `<h1>This is HTML</h1>
<script>
document.write('<h1>This is JavaScript</h1>');
window.ironpdf.notifyRender(); // Notify IronPDF when rendering is done
</script>`;
// Rendering options to enable JavaScript
const renderOptions = {
enableJavaScript: true,
};
// Render HTML content to a PDF
const pdf = await PdfDocument.fromHtml(htmlWithJavaScript, { renderOptions });
// Save the PDF to a file
await pdf.saveAs("javascript-in-html.pdf");
})();import { PdfDocument } from "@ironsoftware/ironpdf";
(async () => {
// HTML content containing JavaScript to be executed upon rendering
const htmlWithJavaScript = `<h1>This is HTML</h1>
<script>
document.write('<h1>This is JavaScript</h1>');
window.ironpdf.notifyRender(); // Notify IronPDF when rendering is done
</script>`;
// Rendering options to enable JavaScript
const renderOptions = {
enableJavaScript: true,
};
// Render HTML content to a PDF
const pdf = await PdfDocument.fromHtml(htmlWithJavaScript, { renderOptions });
// Save the PDF to a file
await pdf.saveAs("javascript-in-html.pdf");
})();Ayrıca, özel JavaScript çalıştırarak HTML içeriğinin görünümünü zahmetsizce değiştirebilirsiniz:
import { PdfDocument } from "@ironsoftware/ironpdf";
(async () => {
// JavaScript code to change the text color of header tags to red
const javascriptCode = "document.querySelectorAll('h1').forEach(function(el){ el.style.color = 'red'; })";
// HTML content which will be affected by the custom JavaScript
const htmlContent = "<h1>Happy New Year!</h1>";
// Rendering options to enable and apply the custom JavaScript
const renderOptions = {
enableJavaScript: true,
javascript: javascriptCode,
};
// Render HTML content to a PDF
const pdf = await PdfDocument.fromHtml(htmlContent, { renderOptions });
// Save the PDF with the applied JavaScript effects
await pdf.saveAs("executed_js.pdf");
})();import { PdfDocument } from "@ironsoftware/ironpdf";
(async () => {
// JavaScript code to change the text color of header tags to red
const javascriptCode = "document.querySelectorAll('h1').forEach(function(el){ el.style.color = 'red'; })";
// HTML content which will be affected by the custom JavaScript
const htmlContent = "<h1>Happy New Year!</h1>";
// Rendering options to enable and apply the custom JavaScript
const renderOptions = {
enableJavaScript: true,
javascript: javascriptCode,
};
// Render HTML content to a PDF
const pdf = await PdfDocument.fromHtml(htmlContent, { renderOptions });
// Save the PDF with the applied JavaScript effects
await pdf.saveAs("executed_js.pdf");
})();
İndirme butonuna tıkladığımızda, yukarıdaki resmin PDF sayfasında olduğu gibi PDF dosyasını indirir. Oluşturulan PDF dosyası aşağıdaki gibi olacaktır.

Sonuç
Unutulmamalıdır ki, başkaları tarafından kullanılan yukarıdaki JavaScript kodu kötüye kullanım ve güvenlik sorunlarına neden olabilir. Böyle bir kodu bir web sayfasına veya web sitesine eklerken, yetkisiz erişim ve veri güvenliği zafiyetleri gibi riskleri dikkate almak çok önemlidir. Ayrıca, gerekli tüm özelliklere sahip olmayan eski tarayıcıları destekleme gerekliliğini ve farklı sistemler ve tarayıcılarla yaşanabilecek uyumluluk sorunlarını da göz önünde bulundurmak önemlidir.
IronPDF, sadece Node.js için değil, aynı zamanda diğer popüler platformlar için de bulunmaktadır, bunlar arasında .NET, Java ve Python yer alır. Bu çapraz platform kullanılabilirliği, farklı teknoloji yığınlarıyla çalışan geliştiriciler için tutarlılık ve esneklik sağlar. Zengin özellik seti, sorunsuz entegrasyonu ve güçlü performansıyla IronPDF, Node.js projelerinde PDF oluşturma sürecini basitleştirmek isteyen geliştiriciler için değerli bir araçtır.
Çeşitli geliştirici taleplerine uyum sağlamak için kütüphane, satın alma imkanı sunan ücretsiz deneme lisansı ve ek geliştirici lisansları dahil olmak üzere çeşitli lisanslama seçenekleri sağlar. Lite paketi, süresiz lisans, 30 günlük para iade garantisi, bir yıl yazılım desteği ve yükseltme seçenekleri ile birlikte gelir. $799 İlk satın alma dışında başka masraf yoktur.








