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

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

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

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

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

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

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

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

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

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.

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

Darrius Serrant, Miami Üniversitesi'nden Bilgisayar Bilimleri lisans derecesine sahiptir ve Iron Software'de Tam Yığın WebOps Pazarlama Mühendisi olarak çalışmaktadır. Küçük yaşlardan itibaren kodlamaya ilgi duyan Darrius, bilişimi hem gizemli hem de erişilebilir buldu ve onu yaratıcılık ve problem çö...

Daha Fazlasını Oku

Iron Destek Ekibi

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