HTML'yi Node.js'de PDF'ye dönüştürün

IronPDF'nin en güçlü ve en popüler özelliği, ham HTML, CSS ve JavaScript'ten yüksek hassasiyetli PDF'ler oluşturma yeteneğidir. Bu öğretici, Node.js geliştiricilerini HTML içeriğini PDF'lere dönüştürmenin pratik yöntemleriyle yürütmektedir — tek satırlık bir dize dönüşümünden dinamik şablon tabanlı belge oluşturmaya kadar.

IronPDF, geliştiricilerin güçlü PDF işleme yeteneklerini yazılım uygulamalarına hızlı bir şekilde uygulamalarına yardımcı olan bir yüksek seviye API kütüphanesidir. IronPDF, birden fazla programlama dilinde mevcuttur. PDF oluşturma hakkında ayrıntılı bilgi için .NET, Java ve Python ile resmi belgeler sayfalarını inceleyin. Bu öğretici, Node.js projelerine uygulandığı şekilde kullanımını kapsar.

Hızlı Başlangıç: Node.js'de HTML'yi PDF'ye dönüştürün

İçindekiler

Node.js için IronPDF ile Nasıl Başlanır? {#ilk-adimlar}

Bugün IronPDF ile projenizde ücretsiz bir deneme ile başlayın.

IronPDF Kütüphanesini Yükleme

IronPDF Node.js paketini, seçilen Node.js projenizde aşağıdaki NPM komutunu çalıştırarak kurun:

//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/install.sh
npm install @ironsoftware/ironpdf
//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/install.sh
npm install @ironsoftware/ironpdf
SHELL

IronPDF paketini manuel olarak indirip kurabilirsiniz.

IronPDF Motoru Nasıl Kurulur?

Node.js için IronPDF, çalışması için bir IronPDF Motor ikilisi gerektirir.

IronPDF Motorunun kurulumu isteğe bağlıdır. @ironsoftware/ironpdf paketi, ilk çalıştırıldığında işletim sisteminize uygun ikili dosyayı otomatik olarak indirir ve yükler. İnternet erişiminin kısıtlı veya mevcut olmadığı ortamlarda açık kurulum önerilmektedir.

İşletim sisteminiz için uygun paketi kurun.

Lisans Anahtarı Nasıl Uygulanır?

Varsayılan olarak, IronPDF tüm oluşturduğu veya değiştirdiği belgelere bir filigran uygular. Filigranı kaldırmak için, geçerli bir lisans anahtarıyla global IronPdfGlobalConfig nesnesindeki licenseKey özelliğini ayarlayın:

//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/config.js
import { IronPdfGlobalConfig } from "@ironsoftware/ironpdf";

// Retrieve the global configuration object
var config = IronPdfGlobalConfig.getConfig();

// Set a valid license key to remove watermarks
config.licenseKey = "{YOUR-LICENSE-KEY-HERE}";
//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/config.js
import { IronPdfGlobalConfig } from "@ironsoftware/ironpdf";

// Retrieve the global configuration object
var config = IronPdfGlobalConfig.getConfig();

// Set a valid license key to remove watermarks
config.licenseKey = "{YOUR-LICENSE-KEY-HERE}";
JAVASCRIPT

Ücretsiz deneme lisans anahtarı edinin veya lisans anahtarı satın alın.

[Lisans anahtarını ayarlayın ve diğer global yapılandırma ayarlarını diğer kütüphane işlevlerini çağırmadan önce ayarlayın. Bu, uygulama genelinde optimum performans ve doğru davranışı sağlar.

Bu öğreticideki geri kalan kod örnekleri, her komut dosyasının en üstüne içe aktarılan ayrı bir config.js dosyasında bir lisans anahtarının uygulandığını varsaymaktadır:

//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/config-import.js
import { PdfDocument } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script
// ...
//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/config-import.js
import { PdfDocument } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script
// ...
JAVASCRIPT

Lisans anahtarı olmadan oluşturulan bir PDF belgesinde görüntülenen IronPDF filigranı Watermarksiz PDF belgeleri oluşturmak için ironpdf.com/nodejs/licensing/ adresinden bir lisans anahtarı alın.

Node.js'de HTML'yi PDF'ye Nasıl Dönüştürürsünüz? {#html-to-pdf-donustur}

IronPDF Node.js kütüphanesi, HTML içerikten PDF dosyaları oluşturmak için dört yaklaşım sunar:

  1. Bir HTML kod dizesinden
  2. Yerel bir HTML dosyasından
  3. Çevrimiçi bir URL'den
  4. Sıkıştırılmış bir ZIP arşivinden

Her yaklaşım, temel olarak PdfDocument sınıfını kullanır. PdfDocument, bir kaynak içerikten üretilen bir PDF dosyasını temsil eder ve IronPDF'nin temel oluşturma ve düzenleme özelliklerinin çoğunu yönlendirir.

Bir HTML Dizesinden PDF Nasıl Oluşturulur? {#html-dizgisinden-pdf-olustur}

PdfDocument.fromHtml, ham HTML işaretleme dizilerinden PDF'ler oluşturur. HTML dizisi metin dosyaları, veri akışları, bir HTML şablon motoru veya dinamik olarak oluşturulmuş işaretlemeler gibi hemen hemen her yerden elde edilebildiğinden, bu yaklaşım dört yöntem arasında en fazla esnekliği sunar.

//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/html-string-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Create a PDF from an HTML string
const pdf = await PdfDocument.fromHtml("<h1>Hello from IronPDF!</h1>");

// Save the PDF document to the file system
await pdf.saveAs("html-string-to-pdf.pdf");
//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/html-string-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Create a PDF from an HTML string
const pdf = await PdfDocument.fromHtml("<h1>Hello from IronPDF!</h1>");

// Save the PDF document to the file system
await pdf.saveAs("html-string-to-pdf.pdf");
JAVASCRIPT

PdfDocument.fromHtml, PdfDocument sınıfının bir örneğine çözümlenen bir Promise döndürür. Örneği aldıktan sonra, PDF'yi diske yazmak için hedef dosya yoluyla saveAs'yi çağırın. Kaydedilen PDF dosyası, HTML'yi standartlara uyan bir tarayıcının görüntüleyeceği şekilde render eder.

PDF document generated from the HTML string containing a level-one heading Hello from IronPDF! The PDF generated from the HTML string <h1>Hello from IronPDF!</h1>. PdfDocument.fromHtml tarafından oluşturulan PDF dosyaları, web sayfası içeriğinin görüneceği şekilde görüntülenir.

Bir HTML Dosyasından PDF Nasıl Oluşturulur? {#create-pdf-from-html-file}

PdfDocument.fromHtml ayrıca yerel bir HTML belgesinin yolunu da kabul eder. Bir işaretleme dizesi yerine, ilk argüman olarak geçerli bir dosya yolunu geçirin. Yerel CSS, JavaScript ve resim varlıklarına referans veren kaydedilmiş web sayfaları ile çalışırken tercih edilen bir yaklaşımdır.

Aşağıdaki örnek, bir örnek web sayfasını bir PDF'ye dönüştürmektedir:

//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/html-file-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Render a PDF from a local HTML file
const pdf = await PdfDocument.fromHtml("./sample2.html");

// Save the PDF document to the project directory
await pdf.saveAs("html-file-to-pdf-1.pdf");
//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/html-file-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Render a PDF from a local HTML file
const pdf = await PdfDocument.fromHtml("./sample2.html");

// Save the PDF document to the project directory
await pdf.saveAs("html-file-to-pdf-1.pdf");
JAVASCRIPT

PDF'ye dönüştürülmeden önce Google Chrome'da görüntülenen örnek HTML sayfası Örnek HTML sayfası, Google Chrome'da göründüğü şekilde. Bu ve benzeri sayfaları, Dosya Örnekleri web sitesinden indirin: https://filesamples.com/samples/code/html/sample2.html

IronPDF, orijinal HTML belgesinin görünümünü korur ve bağlantılar, formlar ve diğer etkileşimli öğelerin işlevselliğini sürdürür. Bu sadakat, paragraflar, listeler, resimler, köprüler ve istemci tarafı komut dosyalarını içeren karmaşık sayfalara kadar genişler.

Örnek HTML dosyasından oluşturulan ve orijinal sayfa düzeninin aslına sadık bir şekilde yeniden üretildiğini gösteren PDF belgesi **Bu PDF yukarıdaki HTML dosyasından üretilmiştir. Görünümünü önceki görüntü ile karşılaştırın — IronPDF düzeni yüksek sadakat ile korur.

IronPDF, basit işaretlemenin çok ötesine geçen sayfaları işler. Aşağıdaki örnek, birçok harici CSS dosyası, görüntü ve komut dosyası varlığı içeren özellik açısından zengin bir sayfayı dönüştürmektedir:

//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/html-complex-file-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Render a PDF from a complex HTML page with external assets
PdfDocument.fromHtml("./sample4.html").then(async (pdf) => {
    return await pdf.saveAs("html-file-to-pdf-2.pdf");
});
//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/html-complex-file-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Render a PDF from a complex HTML page with external assets
PdfDocument.fromHtml("./sample4.html").then(async (pdf) => {
    return await pdf.saveAs("html-file-to-pdf-2.pdf");
});
JAVASCRIPT

Zengin CSS stilleri ve JavaScript ile işlenen içerik barındıran karmaşık bir HTML sayfasından oluşturulan PDF Google Chrome'da iyi görünüyorsa, PDF formatına dönüştürüldüğünde de iyi görünecektir. Bu, CSS-yoğun ve JavaScript ile oluşturulmuş sayfa tasarımlarını içerir.

İpuçlarıBir sayfa yerel dosya yollarından varlıklar alıyorsa, tüm başvurulan CSS dosyalarının, görüntülerin ve komut dosyalarının, HTML dosyasının konumuna göre mevcut olduğundan emin olun. IronPDF'nin Chrome işleme motoru, bu yolları bir tarayıcının yapacağı gibi çözer.

Bir URL'den PDF Nasıl Oluşturulur? {#url'dan-pdf-olustur}

PdfDocument.fromUrl canlı bir web sayfasını alır ve PDF olarak görüntüler. Herhangi bir genel olarak erişilebilir URL'yi argüman olarak geçirin. IronPDF'nin Chrome işleme motoru, sayfayı alır, tüm varlıkları yükler ve manuel HTML indirmeye gerek kalmadan pikselle kusursuz bir PDF üretir.

//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/url-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Convert a live web page to a PDF
const pdf = await PdfDocument.fromUrl("https://en.wikipedia.org/wiki/PDF");

// Save the document
await pdf.saveAs("url-to-pdf.pdf");
//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/url-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Convert a live web page to a PDF
const pdf = await PdfDocument.fromUrl("https://en.wikipedia.org/wiki/PDF");

// Save the document
await pdf.saveAs("url-to-pdf.pdf");
JAVASCRIPT

Standartlara uygun bir tarayıcıda görüntülenen PDF formatı hakkında Wikipedia makalesi Standartlara uyumlu bir web tarayıcısında görünen PDF formatı hakkındaki Wikipedia makalesi.

Wikipedia PDF makalesi sayfasında PdfDocument.fromUrl çağrısı ile oluşturulan PDF belgesi **Bir Wikipedia makalesinde PdfDocument.fromUrl çağrısı yapıldığında oluşturulan PDF. Orijinal web sayfasına çok benzerliğini not edin.

ÖnemliURL tabanlı dönüşümler hedef sunucunun IronPDF çalıştıran makineden erişilebilir olmasını gerektirir. Kimlik doğrulama, VPN veya güvenlik duvarlarının ardındaki sayfalar için ChromePdfRenderOptions aracılığıyla ek yapılandırma gerekebilir.

Bir Zip Arşivinden PDF Nasıl Oluşturulur? {#create-pdf-from-zip}

PdfDocument.fromZip, bir ZIP arşivinde bulunan belirli bir HTML dosyasını PDF'ye dönüştürür. Bu, HTML, CSS ve görüntü varlıklarını bir arada paketleyen kendi içerikli HTML projeleri dağıtırken özellikle kullanışlıdır.

Bu örnek için, proje dizininin şu yapıya sahip bir ZIP dosyası içerdiğini varsayın:

//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/zip-structure.txt
html-zip.zip
├─ index.html
├─ style.css
├─ logo.png

index.html dosyası şunları içerir:

//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/index.html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Hello world!</title>
    <link rel="stylesheet" href="style.css">
  </head>
  <body>
    <h1>Hello from IronPDF!</h1>
    <a href="https://ironpdf.com/nodejs/">
      <img src="logo.png" alt="IronPDF for Node.js">
    </a>
  </body>
</html>
//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/index.html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Hello world!</title>
    <link rel="stylesheet" href="style.css">
  </head>
  <body>
    <h1>Hello from IronPDF!</h1>
    <a href="https://ironpdf.com/nodejs/">
      <img src="logo.png" alt="IronPDF for Node.js">
    </a>
  </body>
</html>
HTML

Ve style.css sayfa düzenini ve yazı tipi kurallarını belirtir:

//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/style.css
@font-face {
  font-family: 'Gotham-Black';
  src: url('gotham-black-webfont.eot?') format('embedded-opentype'), 
       url('gotham-black-webfont.woff2') format('woff2'), 
       url('gotham-black-webfont.woff') format('woff'), 
       url('gotham-black-webfont.ttf') format('truetype'), 
       url('gotham-black-webfont.svg') format('svg');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

body {
  display: flex;
  flex-direction: column;
  justify-content: center;
  margin-left: auto;
  margin-right: auto;
  margin-top: 200px;
  margin-bottom: auto;
  color: white;
  background-color: black;
  text-align: center;
  font-family: "Helvetica"
}

h1 {
  font-family: "Gotham-Black";
  margin-bottom: 70px;
  font-size: 32pt;
}

img {
  width: 400px;
  height: auto;
}

p {
  text-decoration: underline;
  font-size: smaller;
}

Varsayımsal HTML ZIP dosyasında bulunan örnek logo.png görüntüsü Varsayımsal HTML ZIP dosyası içindeki örnek görüntü.

fromZip çağrısı yaparken, ilk argüman olarak ZIP dosyasının yolunu, ikinci argüman olarak ise bir yapılandırma nesnesini belirtin. mainHtmlFile özelliğini, dönüştürülmesi gereken arşiv içindeki HTML dosyasının adına ayarlayın:

//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/zip-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Convert an HTML file from a ZIP archive to PDF
PdfDocument.fromZip("./html-zip.zip", {
  mainHtmlFile: "index.html"
}).then(async (pdf) => {
  return await pdf.saveAs("html-zip-to-pdf.pdf");
});
//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/zip-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Convert an HTML file from a ZIP archive to PDF
PdfDocument.fromZip("./html-zip.zip", {
  mainHtmlFile: "index.html"
}).then(async (pdf) => {
  return await pdf.saveAs("html-zip-to-pdf.pdf");
});
JAVASCRIPT

HTML ZIP arşivinden oluşturulan, siyah arka plan üzerinde IronPDF logosu ve stilize başlığı gösteren PDF **PdfDocument.fromZip kullanılarak PDF oluşturma. Fonksiyon, ZIP dosyasından HTML kodunu ve demetlenen varlıklarını başarıyla işler.

IronPDF Hangi İleri Düzey İşleme Seçeneklerini Destekler? {#ileri-duzey-rendeyecek-secenekler}

ChromePdfRenderOptions arayüzü, PDF görüntüleme davranışının ayrıntılı özelleştirilmesi için özellikler sunar. Bu ayarlar PDF oluşturulmadan önce uygulanır ve düzen, görsel görünüm ve dinamik içerik için öngörülemeyen durumları kapsar.

IronPDF her dönüşüme varsayılan işleme ayarları uygular. Bu varsayılan değerleri defaultChromePdfRenderOptions işleviyle alın:

//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/default-options.js
import { defaultChromePdfRenderOptions } from "@ironsoftware/ironpdf";

// Retrieve a ChromePdfRenderOptions object with default settings
var options = defaultChromePdfRenderOptions();
//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/default-options.js
import { defaultChromePdfRenderOptions } from "@ironsoftware/ironpdf";

// Retrieve a ChromePdfRenderOptions object with default settings
var options = defaultChromePdfRenderOptions();
JAVASCRIPT

Döndürülen nesnenin özelliklerini gerektiği gibi değiştirin ve herhangi bir dönüştürme yönteminin renderOptions parametresine aktarın.

Başlıklar ve Altbilgiler Nasıl Eklenir? {#basliklar-ve-altliklar-ekle}

textHeader ve textFooter özellikleri, yeni oluşturulan bir PDF'nin her sayfasına özel metin tabanlı içerik ekler. Aşağıdaki örnek, Google ana sayfasından bir PDF oluşturur ve her biri farklı bir yazı tipi kullanan özel bir başlık ve alt bilgi ekler:

//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/custom-headers-footers.js
import { PdfDocument, defaultChromePdfRenderOptions, AffixFonts } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Start from default render options
var options = defaultChromePdfRenderOptions();

// Configure a text-based header
options.textHeader = {
  centerText: "https://www.adobe.com",
  dividerLine: true,
  font: AffixFonts.CourierNew,
  fontSize: 12,
  leftText: "URL to PDF"
};

// Configure a text-based footer
options.textFooter = {
  centerText: "IronPDF for Node.js",
  dividerLine: true,
  fontSize: 14,
  font: AffixFonts.Helvetica,
  rightText: "HTML to PDF in Node.js"
};

// Render the page with custom headers and footers applied
PdfDocument.fromUrl("https://www.google.com/", { renderOptions: options }).then(async (pdf) => {
  return await pdf.saveAs("add-custom-headers-footers-1.pdf");
});
//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/custom-headers-footers.js
import { PdfDocument, defaultChromePdfRenderOptions, AffixFonts } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Start from default render options
var options = defaultChromePdfRenderOptions();

// Configure a text-based header
options.textHeader = {
  centerText: "https://www.adobe.com",
  dividerLine: true,
  font: AffixFonts.CourierNew,
  fontSize: 12,
  leftText: "URL to PDF"
};

// Configure a text-based footer
options.textFooter = {
  centerText: "IronPDF for Node.js",
  dividerLine: true,
  fontSize: 14,
  font: AffixFonts.Helvetica,
  rightText: "HTML to PDF in Node.js"
};

// Render the page with custom headers and footers applied
PdfDocument.fromUrl("https://www.google.com/", { renderOptions: options }).then(async (pdf) => {
  return await pdf.saveAs("add-custom-headers-footers-1.pdf");
});
JAVASCRIPT

Google ana sayfasından oluşturulan ve özel metin üstbilgisi ve altbilgisi eklenmiş PDF textHeader ve textFooter kullanılarak özel metin üstbilgisi ve altbilgisi eklenmiş, Google ana sayfasından oluşturulan bir PDF.

Daha zengin başlık ve altbilgi düzenleri için, bunun yerine htmlHeader ve htmlFooter özelliklerini kullanın. Bunlar, tipografi, görüntüler ve hizalama üzerinde tam kontrol sağlamak için ham HTML parçaları kabul eder. Aşağıdaki örnek, başlıkta sayfa URL'sini kalın olarak ortalar ve alt bilgiye bir logo resmi gömüyor:

//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/html-headers-footers.js
import { PdfDocument, defaultChromePdfRenderOptions } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Start from default render options
var options = defaultChromePdfRenderOptions();

// Define a rich HTML header
options.htmlHeader = {
  htmlFragment: "<strong>https://www.google.com/</strong>",
  dividerLine: true,
  dividerLineColor: "blue",
  loadStylesAndCSSFromMainHtmlDocument: true,
};

// Define a rich HTML footer with a logo
options.htmlFooter = {
  htmlFragment: "<img src='logo.png' alt='IronPDF for Node.js' style='display: block; width: 150px; height: auto; margin-left: auto; margin-right: auto;'>",
  dividerLine: true,
  loadStylesAndCSSFromMainHtmlDocument: true
};

// Apply custom HTML headers and footers during rendering
await PdfDocument.fromUrl("https://www.google.com/", { renderOptions: options }).then(async (pdf) => {
  return await pdf.saveAs("add-html-headers-footers.pdf");
});
//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/html-headers-footers.js
import { PdfDocument, defaultChromePdfRenderOptions } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Start from default render options
var options = defaultChromePdfRenderOptions();

// Define a rich HTML header
options.htmlHeader = {
  htmlFragment: "<strong>https://www.google.com/</strong>",
  dividerLine: true,
  dividerLineColor: "blue",
  loadStylesAndCSSFromMainHtmlDocument: true,
};

// Define a rich HTML footer with a logo
options.htmlFooter = {
  htmlFragment: "<img src='logo.png' alt='IronPDF for Node.js' style='display: block; width: 150px; height: auto; margin-left: auto; margin-right: auto;'>",
  dividerLine: true,
  loadStylesAndCSSFromMainHtmlDocument: true
};

// Apply custom HTML headers and footers during rendering
await PdfDocument.fromUrl("https://www.google.com/", { renderOptions: options }).then(async (pdf) => {
  return await pdf.saveAs("add-html-headers-footers.pdf");
});
JAVASCRIPT

Sayfa URL'sini kalın harflerle gösteren HTML tabanlı bir üstbilgi ve IronPDF logosunu gösteren HTML tabanlı bir altbilgi içeren PDF IronPDF, her sayfada markalaşma ve düzen üzerinde tam kontrol sağlayan HTML tabanlı başlıkları ve alt bilgileri destekler.

Sayfa Boyutu, Yönlendirme ve Kenar Boşluklarını Nasıl Kontrol Edersiniz? {#sayfa-boyutu-yonlendirme-ve-marjinler}

margin, paperSize, fitToPaperMode, paperOrientation ve grayScale özellikleri, ChromePdfRenderOptions öğesindeki her bir sayfanın fiziksel düzenini kontrol eder. Aşağıdaki örnek, özel kenar boşlukları, A5 yatay yönlendirme ve gri tonlama çıktısı ile Google ana sayfasını dönüştürüyor:

//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/page-size-orientation.js
import { PdfDocument, defaultChromePdfRenderOptions, PaperSize, FitToPaperModes, PdfPaperOrientation } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Start from default render options
var options = defaultChromePdfRenderOptions();

// Set page margins in millimeters
options.margin = {
  top: 50,
  bottom: 50,
  left: 60,
  right: 60
};

// Configure paper size, fit mode, orientation, and color mode
options.paperSize = PaperSize.A5;
options.fitToPaperMode = FitToPaperModes.FitToPage;
options.paperOrientation = PdfPaperOrientation.Landscape;
options.grayScale = true;

// Render with the customized layout settings
PdfDocument.fromUrl("https://www.google.com/", { renderOptions: options }).then(async (pdf) => {
  return await pdf.saveAs("set-margins-and-page-size.pdf");
});
//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/page-size-orientation.js
import { PdfDocument, defaultChromePdfRenderOptions, PaperSize, FitToPaperModes, PdfPaperOrientation } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Start from default render options
var options = defaultChromePdfRenderOptions();

// Set page margins in millimeters
options.margin = {
  top: 50,
  bottom: 50,
  left: 60,
  right: 60
};

// Configure paper size, fit mode, orientation, and color mode
options.paperSize = PaperSize.A5;
options.fitToPaperMode = FitToPaperModes.FitToPage;
options.paperOrientation = PdfPaperOrientation.Landscape;
options.grayScale = true;

// Render with the customized layout settings
PdfDocument.fromUrl("https://www.google.com/", { renderOptions: options }).then(async (pdf) => {
  return await pdf.saveAs("set-margins-and-page-size.pdf");
});
JAVASCRIPT

PaperSize numaralandırması, A4, A5, Letter ve Legal gibi standart kağıt boyutlarını içerir. PdfPaperOrientation numaralandırması, Portrait ve Landscape'yi destekler. Bu ayarlar, baskıya hazır belgeler için çıkış boyutları üzerinde hassas kontrol sağlar.

İpuçlarıBaskı iş akışları için PDF üretirken, daima kenar boşluklarını açıkça belirtilin. Varsayılan kenar boşlukları hedef yazıcınızın veya kağıt formatının gereksinimlerini karşılamayabilir.

Dinamik Web Sayfalarını Nasıl İşlersiniz? {#dinamik-web-sayfalari}

İçeriği asenkron olarak yükleyen sayfalar — JavaScript zamanlayıcıları, tembel yükleme veya API çağrıları aracılığıyla — IronPDF'nin motoru tarafından yakalanana kadar tam olarak işlemiş olmayabilir. WaitFor mekanizması, waitFor üzerindeki ChromePdfRenderOptions özelliği aracılığıyla yapılandırılır ve Chrome renderer'a, sayfayı yakalamadan önce belirtilen koşullar karşılanana kadar duraklamasını söyler.

Aşağıdaki kod bloğu, IronPDF'yi sayfa içeriğini yakalamadan önce 20 saniye beklemeye ayarlıyor:

//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/waitfor-delay.js
import { PdfDocument, defaultChromePdfRenderOptions, WaitForType } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Configure the renderer to wait 20 seconds before capturing
var options = defaultChromePdfRenderOptions();
options.waitFor = {
  type: WaitForType.RenderDelay,
  delay: 20000
};

PdfDocument.fromUrl("https://ironpdf.com/nodejs/", { renderOptions: options }).then(async (pdf) => {
  return await pdf.saveAs("waitfor-renderdelay.pdf");
});
//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/waitfor-delay.js
import { PdfDocument, defaultChromePdfRenderOptions, WaitForType } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Configure the renderer to wait 20 seconds before capturing
var options = defaultChromePdfRenderOptions();
options.waitFor = {
  type: WaitForType.RenderDelay,
  delay: 20000
};

PdfDocument.fromUrl("https://ironpdf.com/nodejs/", { renderOptions: options }).then(async (pdf) => {
  return await pdf.saveAs("waitfor-renderdelay.pdf");
});
JAVASCRIPT

Alternatif olarak, belirli bir DOM öğesi görünene kadar IronPDF'yi beklemeye ayarlayın. Bu, içerik JavaScript çerçevesi monte edildikten sonra enjekte edilen sayfalar için yararlıdır:

//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/waitfor-element.js
import { PdfDocument, defaultChromePdfRenderOptions, WaitForType } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Configure the renderer to wait for a specific DOM element (up to 20 seconds)
var options = defaultChromePdfRenderOptions();
options.waitFor = {
  type: WaitForType.HtmlElement,
  htmlQueryStr: "div.ProseMirror",
  maxWaitTime: 20000,
};

PdfDocument.fromUrl("https://app.surferseo.com/drafts/s/V7VkcdfgFz-dpkldsfHDGFFYf4jjSvvjsdf", { renderOptions: options }).then(async (pdf) => {
  return await pdf.saveAs("waitfor-htmlelement.pdf");
});
//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/waitfor-element.js
import { PdfDocument, defaultChromePdfRenderOptions, WaitForType } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Configure the renderer to wait for a specific DOM element (up to 20 seconds)
var options = defaultChromePdfRenderOptions();
options.waitFor = {
  type: WaitForType.HtmlElement,
  htmlQueryStr: "div.ProseMirror",
  maxWaitTime: 20000,
};

PdfDocument.fromUrl("https://app.surferseo.com/drafts/s/V7VkcdfgFz-dpkldsfHDGFFYf4jjSvvjsdf", { renderOptions: options }).then(async (pdf) => {
  return await pdf.saveAs("waitfor-htmlelement.pdf");
});
JAVASCRIPT

WaitForType.HtmlElement stratejisi, standart bir CSS sorgu seçicisi kullanır. Renderer, maxWaitTime milisaniye geçene kadar veya öğe bulunana kadar (hangisi önce gelirse) öğenin varlığını kontrol eder.

UyarıAşırı uzun bekleme zamanları ayarlamak, yüksek verimli uygulamalarda PDF oluşturma süresini önemli ölçüde artırabilir. Kullanım durumunuzda gereken içeriği güvenilir bir şekilde yakalayan minimum gecikmeyi kullanın.

Bir HTML Şablonundan PDF Nasıl Oluşturulur? {#html-sablondan-pdf}

Gerçek dünyadaki yaygın bir otomasyon model, bir veritabanı, API veya elektronik tablo gibi kaynaklardan verilerle, yer tutucu değerlerin yerine ortak bir HTML şablonundan bir grup PDF üretmek. IronPDF'nin replaceText yöntemindeki PdfDocument bunu doğrudan halleder.

Aşağıdaki örnek fatura şablonu (halka açık bir CodePen fatura şablonundan uyarlanmıştır), değiştirilebilir içerik için {COMPANY-NAME}, {FULL-NAME} ve {INVOICE-NUMBER} gibi küme parantezi yer tutucuları kullanır:

Dinamik veri ikamesi için yer tutucu etiketleri içeren örnek fatura HTML şablonu @@--CODE-52685--@@ ile kullanılacak bir örnek fatura şablonu, yer tutucu etiketleri ile. JavaScript kodu, her etiketi gerçek verilerle değiştirecek ve belge bir PDF olarak kaydedilmeden önce.

Aşağıdaki kod, şablonu yükler, her yer tutucuyu test verileri ile değiştirir ve sonucu PDF olarak kaydeder:

//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/html-template-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

/**
 * Loads an HTML template from the file system as a PdfDocument.
 */
async function getTemplateHtml(fileLocation) {
  return PdfDocument.fromHtml(fileLocation);
}

/**
 * Saves a PdfDocument to the specified file path.
 */
async function generatePdf(pdf, location) {
  return pdf.saveAs(location);
}

/**
 * Replaces a named placeholder in the PdfDocument with a data value.
 */
async function addTemplateData(pdf, key, value) {
  return pdf.replaceText(key, value);
}

// Path to the HTML invoice template
const template = "./sample-invoice.html";

// Load the template, fill in all placeholder values, then save the PDF
getTemplateHtml(template).then(async (doc) => {
    await addTemplateData(doc, "{FULL-NAME}", "Lizbeth Presland");
    await addTemplateData(doc, "{ADDRESS}", "678 Manitowish Alley, Portland, OG");
    await addTemplateData(doc, "{PHONE-NUMBER}", "(763) 894-4345");
    await addTemplateData(doc, "{INVOICE-NUMBER}", "787");
    await addTemplateData(doc, "{INVOICE-DATE}", "August 28, 2023");
    await addTemplateData(doc, "{AMOUNT-DUE}", "13,760.13");
    await addTemplateData(doc, "{RECIPIENT}", "Celestyna Farmar");
    await addTemplateData(doc, "{COMPANY-NAME}", "BrainBook");
    await addTemplateData(doc, "{TOTAL}", "13,760.13");
    await addTemplateData(doc, "{AMOUNT-PAID}", "0.00");
    await addTemplateData(doc, "{BALANCE-DUE}", "13,760.13");
    await addTemplateData(doc, "{ITEM}", "Training Sessions");
    await addTemplateData(doc, "{DESCRIPTION}", "60 Minute instruction");
    await addTemplateData(doc, "{RATE}", "3,440.03");
    await addTemplateData(doc, "{QUANTITY}", "4");
    await addTemplateData(doc, "{PRICE}", "13,760.13");
    return doc;
}).then(async (doc) => await generatePdf(doc, "html-template-to-pdf.pdf"));
//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/html-template-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

/**
 * Loads an HTML template from the file system as a PdfDocument.
 */
async function getTemplateHtml(fileLocation) {
  return PdfDocument.fromHtml(fileLocation);
}

/**
 * Saves a PdfDocument to the specified file path.
 */
async function generatePdf(pdf, location) {
  return pdf.saveAs(location);
}

/**
 * Replaces a named placeholder in the PdfDocument with a data value.
 */
async function addTemplateData(pdf, key, value) {
  return pdf.replaceText(key, value);
}

// Path to the HTML invoice template
const template = "./sample-invoice.html";

// Load the template, fill in all placeholder values, then save the PDF
getTemplateHtml(template).then(async (doc) => {
    await addTemplateData(doc, "{FULL-NAME}", "Lizbeth Presland");
    await addTemplateData(doc, "{ADDRESS}", "678 Manitowish Alley, Portland, OG");
    await addTemplateData(doc, "{PHONE-NUMBER}", "(763) 894-4345");
    await addTemplateData(doc, "{INVOICE-NUMBER}", "787");
    await addTemplateData(doc, "{INVOICE-DATE}", "August 28, 2023");
    await addTemplateData(doc, "{AMOUNT-DUE}", "13,760.13");
    await addTemplateData(doc, "{RECIPIENT}", "Celestyna Farmar");
    await addTemplateData(doc, "{COMPANY-NAME}", "BrainBook");
    await addTemplateData(doc, "{TOTAL}", "13,760.13");
    await addTemplateData(doc, "{AMOUNT-PAID}", "0.00");
    await addTemplateData(doc, "{BALANCE-DUE}", "13,760.13");
    await addTemplateData(doc, "{ITEM}", "Training Sessions");
    await addTemplateData(doc, "{DESCRIPTION}", "60 Minute instruction");
    await addTemplateData(doc, "{RATE}", "3,440.03");
    await addTemplateData(doc, "{QUANTITY}", "4");
    await addTemplateData(doc, "{PRICE}", "13,760.13");
    return doc;
}).then(async (doc) => await generatePdf(doc, "html-template-to-pdf.pdf"));
JAVASCRIPT

Yukarıdaki kod üç asenkron yardımcı fonksiyonu tanımlar:

  • getTemplateHtml: PdfDocument nesnesine PdfDocument.fromHtml kullanarak bir HTML dosyası yükler.
  • addTemplateData: Yer tutucu anahtarı gerçek veri değeriyle değiştirmek için PdfDocument.replaceText'yi çağırır.
  • generatePdf: Tamamlanan PdfDocument'yi hedef dosya yoluna yazar.

Her replaceText çağrısı, bellek içi PDF temsilinde doğrudan çalışır, böylece belgeyi diskten yeniden yüklemeye gerek kalmadan birden fazla değiştirme işlemi zincirleme olarak gerçekleştirilebilir. Sonuç olarak, PDF tüm CSS stillerini, yazı tiplerini ve orijinal şablondan düzeni korur.

Tüm yer tutucular gerçek verilerle değiştirildikten sonra fatura şablonundan oluşturulan PDF belgesi Yer tutucu değerleri gerçek verilerle değiştirildiğindeki tamamlanmış PDF faturası. Orijinal şablondan gelen CSS stilleri ve düzeni tam olarak korunur.

Bu yaklaşım, grup belge üretimi için iyi ölçeklenir. Her kayıt için bir kez getTemplateHtml'yi çağırarak her çıktı dosyası için yeni bir PdfDocument oluşturun, ardından generatePdf'yi çağırmadan önce o kaydın verileri için addTemplateData çağrılarını zincirleyin.

Bir Sonraki Adımlar Nelerdir? {#next-steps}

Bu eğitim, IronPDF for Node.js içindeki çekirdek HTML'den PDF'ye dönüşüm yöntemlerini ve en sık kullanılan işleme seçeneklerini kapsar. Aşağıdaki konular, burada öğrendiklerinizi daha özel alanlara genişletir.

Sıkça Sorulan Sorular

Node.js'de HTML'yi PDF'ye nasıl dönüştürürsünüz?

IronPDF kütüphanesini kullanın. npm install @ironsoftware/ironpdf ile kurun, ardından bir HTML dizesi veya dosya yolu ile PdfDocument.fromHtml veya bir web adresi ile PdfDocument.fromUrl çağırın. Sonucu PdfDocument.saveAs ile kaydedin.

Node.js'de bir HTML dizisini PDF'ye nasıl dönüştürürsünüz?

PdfDocument.fromHtml'i HTML dizisi argüman olarak kullanarak çağırın. Bu yöntem, PdfDocument örneğine çözümlenen bir Promise döndürür. PDF'yi diske yazmak için sonuç üzerinde saveAs zincirini kullanın.

Node.js'de yerel bir HTML dosyasını PDF'ye nasıl dönüştürürsünüz?

Bir HTML dizisi yerine geçerli bir dosya sistemi yolunu PdfDocument.fromHtml'e aktarın. IronPDF, bir tarayıcının dosyayı yüklerken yapacağı gibi göreceli CSS, resim ve betik yollarını çözümler.

Node.js'de bir URL'yi PDF'ye nasıl dönüştürürsünüz?

Hedef URL ile PdfDocument.fromUrl'ü çağırın. IronPDF, sayfayı Chrome işleme motoru ile işler ve piksel mükemmel bir PDF üretir. Hedef URL, IronPDF'yi çalıştıran hosttan halka açık olarak erişilebilir olmalıdır.

Node.js'de bir PDF'ye başlıklar ve alt bilgiler nasıl eklenir?

Basit metin başlıkları ve alt bilgiler için ChromePdfRenderOptions nesnesinde textHeader ve textFooter özelliklerini ayarlayın. Daha zengin düzenler için htmlHeader ve htmlFooter'i ham HTML parçalarıyla kullanın. Seçenekler nesnesini herhangi bir dönüştürme yönteminin renderOptions parametresine aktarın.

IronPDF for Node.js'de sayfa boyutunu ve yönünü nasıl değiştirirsiniz?

options.paperSizePaperSize enum'undan bir değere (örneğin PaperSize.A4 veya PaperSize.Letter) ve options.paperOrientationPdfPaperOrientation.Portrait veya PdfPaperOrientation.Landscape olarak ayarlayın. Ayarlanan seçenekleri dönüştürme yöntemine aktarın.

PDF'ye dönüştürürken dinamik JavaScript içeriğini nasıl ele alırsınız?

ChromePdfRenderOptions üzerindeki waitFor özelliğini kullanın. typeWaitForType.RenderDelay olarak ayarlayın ve milisaniye cinsinden bir gecikme sağlayın veya typeWaitForType.HtmlElement olarak ayarlayın ve bir CSS sorgu seçici sağlayın. IronPDF, koşul karşılanıncaya kadar işlemi duraklatacaktır.

ZIP arşivindeki bir HTML dosyasını PDF'ye nasıl dönüştürürsünüz?

ZIP dosyasının yolunu ilk argüman ve ikinci olarak bir seçenekler nesnesi ile PdfDocument.fromZip'ü çağırın. Arşiv içindeki dönüştürülmesi gereken HTML dosyasının adını mainHtmlFile özelliğine ayarlayın.

Oluşturulan PDF'lerden IronPDF filigranı nasıl kaldırılır?

Herhangi bir dönüştürme yöntemini çağırmadan önce küresel yapılandırmaya geçerli bir lisans anahtarı uygulayın. IronPdfGlobalConfig.getConfig() ile yapılandırma nesnesini alın ve config.licenseKey'i anahtarınıza ayarlayın. Ücretsiz deneme lisansı ironpdf.com'da mevcuttur.

Node.js'de bir HTML şablonundan nasıl PDF oluşturabilirsiniz?

Şablonu PdfDocument.fromHtml ile yükleyin, ardından şablondaki her yer tutucu için PdfDocument.replaceText'i yer tutucu dizgesi ve onun yerine geçecek değerle çağırın. Tüm ikameler tamamlandıktan sonra sonuç PDF yazmak için saveAs'ı çağırın.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku
Başlamaya Hazır mısınız?
Sürüm: 2026.5 just released
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz?
bir örnek çalıştır HTML'nizi bir PDF'ye dönüştüğünü izleyin.