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

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();
JAVASCRIPT

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>
HTML

JavaScript'te PDF Dosyaları Nasıl Oluşturulur: Şekil 1

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");
})();
JAVASCRIPT

Ö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");
})();
JAVASCRIPT

JavaScript'te PDF Dosyaları Nasıl Oluşturulur: Şekil 2

İ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.

JavaScript'te PDF Dosyaları Nasıl Oluşturulur: Şekil 3

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.

Darrius Serrant
Tam Yığın Yazılım Mühendisi (WebOps)

Darrius Serrant, Miami Üniversitesi'nden Bilgisayar Bilimi alanında Lisans Derecesine sahip ve Iron Software'de Tam Yığın WebOps Pazarlama Mühendisi olarak çalışıyor. Genç yaşlardan itibaren kodlamaya çekildi, bilgisayar bilimi hem gizemli hem de erişilebilir olarak görüldü ve bu özellik, yaratıcılık ...

Daha Fazla Oku

Iron Destek Ekibi

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