JavaScript'te PDF Dosyaları Nasıl Oluşturulur
Doküman paylaşımında, Adobe tarafından öne çıkarılan Taşınabilir Doküman Formatı (PDF), metin bakımından zengin ve görsel olarak çekici içeriğin bütünlüğünü korumada kritik bir rol oynar. Çevrimiçi bir PDF dosyasına erişmek genellikle özel bir program gerektirir. Bugünün dijital dünyasında, PDF dosyaları, çeşitli önemli yayınlar için vazgeçilmez hale gelmiştir. Birçok işletme, profesyonel belgeler ve faturalar oluşturmak için PDF dosyalarına güvenmektedir. Ayrıca geliştiriciler, özel istemci gereksinimlerini karşılamak için sıklıkla PDF oluşturma kütüphanelerinden faydalanır. Modern kütüphanelerin ortaya çıkışıyla PDF oluşturma süreci daha da sadeleşmiştir. PDF oluşturmayı içeren bir proje için en uygun kütüphaneyi seçerken, oluşturma, okuma ve dönüştürme kabiliyetleri gibi faktörleri dikkate almak, sorunsuz entegrasyon ve optimal performans sağlamak önemlidir.
JavaScript Kütüphaneleri
Müşterinin PDF faturasının bir kopyasını zahmetsizce indirmesini ve yazdırmasını istediğimiz senaryoyu göz önünde bulundurun. Ayrıca, faturanın kesin düzenini korumamız ve kusursuz baskı kalitesini sağlamamız da önemlidir.
Bu bölümde, HTML'yi PDF belgelerine dönüştürme ve oluşturma konusunda mükemmel olan bir dizi yüksek itibarlı JavaScript kütüphanesini inceleyeceğiz ve bize verimli ve doğru doküman üretimi ve dönüşümü için çok yönlü araçlar sağlayacağız.
1. PDFKit
PDFKit, geniş JavaScript kütüphane ekosistemine ilk giren PDF kütüphanelerinden biriydi. 2012'deki ilk sürümünden bu yana önemli ölçüde popülerlik kazanmıştır ve 2021 itibariyle hala düzenli yükseltmeler almaktadır.
Webpack kullanarak, PDFKit hem Node kütüphanesini hem de web tarayıcılarını destekler, özel yazı tipleri ve resim yerleştirme desteklenir.
Ancak, karşılaştırmada göreceğimiz üzere, bazı PDF kütüphaneleri etkin bir şekilde sadece PDFKit sarmalayıcılarıdır ve belki de PDFKit'ten biraz daha kolay kullanılabilir.
PDFKit için kullanılabilir bir yüksek düzeyli API yoktur. Dokümantasyon da sıklıkla zorlayıcıdır. Beklenildiği gibi alışması biraz zaman alır ve JavaScript kullanarak PDF üretmenin her zaman en kolay iş olmadığını fark edebilirsiniz.
// 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
pdfmake, bir şey oluşturmak için geleneksel imperatif yöntemi kullanan PDFKit'in aksine, bildirici bir yaklaşım kullanır. Sonuç olarak, pdfmake kütüphanesini kullanmak, kütüphaneye belirli bir sonucu nasıl elde ettireceğini öğretmek yerine, PDF üretiminin amaçlanan işlevselliğine odaklanmayı daha kolay hale getirir.
Belli çözümlerin umut verici görünebileceği, ancak kusursuz olmayabileceği göz önünde bulundurulmalıdır. Buna bir örnek, Webpack kullanırken pdfmake ile özel yazı tiplerinin entegrasyonudur, bu potansiyel olarak sorunlara yol açabilir. Ne yazık ki, bu özel sorunla ilgili çevrimiçi dokümantasyon sınırlıdır. Ancak, Webpack kullanmıyorsanız, Git deposunu kolayca klonlayabilir ve özel yazı tipi entegrasyonu ile ilgili potansiyel engelleri aşmak için yazı tipi yerleştirme komut dosyasını çalıştırabilirsiniz.
<!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 belgeleri oluşturmasını, gözden geçirmesini 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ı oluşturma, düzenleme ve işleme için bir temel API sunar.
IronPDF for Node.js, PDF belgelerini programlı olarak oluşturma ve özelleştirme sürecini basitleştirir. Iron Software tarafından geliştirilen, yüksek performanslı belge işleme kütüphaneleri sağlayıcısı olarak güvenilir, 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 oluşturma, biçimlendirme ve düzenlemede 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 çıkarma, PDF dosyalarına metin, grafik, yer işaretleri, filigranlar, başlıklar ve altbilgiler ekleme gibi geniş bir özellik yelpazesine sahiptir, hepsi Acrobat Reader'a ihtiyaç olmadan. CSS ve CSS medya dosyalarından, PDF belgeleri üretilebilir. IronPDF, kullanıcıların hem yeni hem de mevcut 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 Oluşturma: 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şturmayı mümkün kılar.
- Gelişmiş Belge Özelleştirme: IronPDF, geliştiricilere PDF belgelerini başlıklar, altbilgiler, ekler, dijital imzalar, filigranlar ve yer işaretleri gibi özelliklerle geliştirme olanağı tanır. Bu, zengin içerik ve etkileşimli öğeler içeren profesyonel düzeyde PDF'ler oluşturmayı mümkün kılar.
- 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 parolalar, 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 asenkron destek sunarak optimize edilmiş performans için tasarlanmıştır. Bu, PDF oluşturma işleminin verimli olduğunu garanti eder ve performansın önemli olduğu kritik uygulamalar için uygun hale getirir.
- Kapsamlı Özellik Seti: PDF belgeleri oluşturma, biçimlendirme ve düzenleme için 50'den fazla özellik ile IronPDF, tüm PDF ile ilgili görevler için kapsamlı bir çözüm sunar. Temel belge oluşturmadan gelişmiş özelleştirme ve güvenliğe kadar, IronPDF geliştiricilerin ihtiyaçlarını karşılamak için geniş bir yetenek yelpazesi sunar.
Aşağıdaki kod, JavaScript kullanarak HTML'yi piksel mükemmelliğinde bir PDF dosyasına render etmenin nasıl olduğunu 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");
})();Özel JavaScript de yürütebilir ve 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");
})();
İndir düğmesine tıkladığımızda, yukarıdaki görüntünün PDF sayfasında gösterildiği gibi PDF dosyası indirilecektir. Oluşturulan PDF dosyası aşağıdaki gibi olacak.

Sonuç
Yukarıda gösterilen JavaScript kodunun başkaları tarafından kullanıldığında potansiyel kötüye kullanım ve güvenlik sorunları olabileceği belirtilmelidir. Bu tür kodları bir web sayfasına veya siteye yerleştirirken yetkisiz erişim ve veri güvenliği açıkları gibi tehlikeleri dikkate almak kritik öneme sahiptir. Ayrıca, gerekli tüm özelliklere sahip olmayabilecek ve çeşitli sistemler ve tarayıcılarla uyumluluk sorunlarına yol açabilecek eski tarayıcıları destekleme ihtiyacını da göz önünde bulundurmak önemlidir.
IronPDF sadece Node.js için değil, aynı zamanda .NET, Java ve Python gibi diğer popüler platformlar için de mevcuttur. Bu platformlar arası kullanılabilirlik, farklı teknoloji yığınlarıyla çalışan geliştiriciler için tutarlılık ve esneklik sağlar. Zengin özellik seti, sorunsuz entegrasyon ve sağlam performansı ile IronPDF, Node.js projeleri içinde PDF oluşturma işlemini kolaylaştırmak isteyen geliştiriciler için değerli bir araçtır.
Çeşitli geliştirici taleplerine uyum sağlamak için, kütüphane ücretsiz deneme lisansı ve satın alınabilecek ek geliştirici lisansları gibi çeşitli lisans seçenekleri sunar. $999 Lite paketi, kalıcı bir lisans, 30 günlük para iade garantisi, bir yıllık yazılım desteği ve yükseltme seçenekleri ile birlikte gelir. İlk satın almanın ötesinde başka bir masraf yoktur.








