Konwertowanie HTML do PDF w Node.js
Najpotężniejszą i najpopularniejszą funkcją IronPDF jest możliwość tworzenia wysokiej jakości plików PDF z surowego HTML, CSS i JavaScript. Ten tutorial prowadzi deweloperów Node.js przez każdy praktyczny sposób zamiany treści HTML na PDF — od konwersji jednolinijkowej aż po dynamiczne generowanie dokumentów oparte na szablonach.
IronPDF to biblioteka API wysokiego poziomu, która pomaga deweloperom szybko implementować potężne możliwości obsługi PDF w aplikacjach oprogramowania. IronPDF jest dostępne w wielu językach programowania. Aby uzyskać szczegółowe informacje na temat tworzenia plików PDF w .NET, Java i Python, zapoznaj się z oficjalnymi stronami dokumentacji. Ten tutorial opisuje jego użycie w projektach Node.js.
Szybki start: Konwertuj HTML na PDF w Node.js
Jak przekonwertować HTML na PDF w Node.js
- Zainstaluj bibliotekę Node.js IronPDF poprzez NPM:
npm install @ironsoftware/ironpdf - Zaimportuj klasę PdfDocument z pakietu
@ironsoftware/ironpdf. - Wywołaj
PdfDocument.fromHtml,PdfDocument.fromUrl, lubPdfDocument.fromZipw zależności od źródła HTML. - Opcjonalnie skonfiguruj opcje renderowania: nagłówki, stopki, rozmiar strony, orientację i marginesy.
- Wywołaj
PdfDocument.saveAs, aby zapisać wygenerowany PDF na dysku.
Spis treści
- Jak rozpocząć pracę z IronPDF for Node.js?
- Jak przekonwertować HTML na PDF w Node.js?
- Jakie zaawansowane opcje renderowania obsługuje IronPDF?
- Jak wygenerować PDF z szablonu HTML?
- Jakie są kolejne kroki?
Jak rozpocząć pracę z IronPDF for Node.js? {#getting-started}
Rozpocznij używanie IronPDF w swoim projekcie już dziś dzięki darmowej wersji próbnej.
Zainstaluj bibliotekę IronPDF
Zainstaluj pakiet Node.js IronPDF, uruchamiając poniższą komendę NPM w wybranym projekcie Node.js:
npm i @ironsoftware/ironpdf
Możesz także pobrać i zainstalować pakiet IronPDF ręcznie.
Jak zainstalować IronPDF Engine?
IronPDF for Node.js wymaga binarnego silnika IronPDF do działania.
@ironsoftware/ironpdf automatycznie pobiera i instaluje odpowiednie binaria dla twojego systemu operacyjnego podczas pierwszego uruchomienia. Zalecana jest instalacja opcjonalna w środowiskach, gdzie dostęp do internetu jest ograniczony lub niedostępny.Zainstaluj binarny plik IronPDF Engine, instalując odpowiedni pakiet dla swojego systemu operacyjnego.
Jak zastosować klucz licencyjny?
Domyślnie IronPDF oznacza wszystkie generowane lub modyfikowane dokumenty znakiem wodnym. Aby usunąć znak wodny, ustaw właściwość licenseKey na globalnym obiekcie IronPdfGlobalConfig z ważnym kluczem licencyjnym:
:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/config.jsimport { 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}";
Uzyskaj bezpłatny klucz licencyjny na okres próbny lub kup klucz licencyjny na stronie licencjonowania.
Pozostałe przykłady kodu w tym samouczku zakładają, że klucz licencyjny został zastosowany w osobnym pliku config.js, który jest importowany na początku każdego skryptu:
:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/config-import.jsimport { PdfDocument } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script
// ...
Uzyskaj klucz licencyjny na ironpdf.com/nodejs/licensing/, aby generować dokumenty PDF bez znaków wodnych.
Jak przekonwertować HTML na PDF w Node.js? {#convert-html-to-PDF}
Biblioteka Node.js IronPDF oferuje cztery podejścia do tworzenia plików PDF z treści HTML:
- Z łańcucha kodu HTML
- Z lokalnego pliku HTML
- Z adresu URL online
- Z archiwum skompresowanego ZIP
Każde podejście używa klasy PdfDocument jako podstawy. Obiekt PdfDocument reprezentuje plik PDF wyprodukowany z jakiejś treści źródłowej i napędza większość podstawowych funkcji tworzenia i edycji IronPDF.
Jak utworzyć PDF z łańcucha HTML? {#create-PDF-from-html-string}
PdfDocument.fromHtml generuje PDFy z ciągów surowego HTMLu. To podejście oferuje największą elastyczność spośród czterech metod, ponieważ ciąg HTML może pochodzić praktycznie z dowolnego miejsca — plików tekstowych, strumieni danych, silnika szablonów HTML lub dynamicznie skonstruowanego oznaczenia.
:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/html-string-to-pdf.jsimport { 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");
PdfDocument.fromHtml zwraca Obietnicę, która rozwiązuje się do instancji klasy PdfDocument. Po uzyskaniu instancji, wywołać saveAs z ścieżką pliku docelowego, aby zapisać PDF na dysk. Zapisany plik PDF renderuje HTML dokładnie tak, jak przeglądarka zgodna ze standardami by go wyświetliła.
The PDF generated from the HTML string <h1>Hello from IronPDF!</h1>. Pliki PDF, które generuje PdfDocument.fromHtml, wyglądają tak samo jak treści stron internetowych.
Jak utworzyć PDF z pliku HTML? {#create-pdf-from-html-file}
PdfDocument.fromHtml również akceptuje ścieżkę do lokalnego dokumentu HTML. Zamiast łańcucha oznaczenia, podaj jako pierwszy argument prawidłową ścieżkę pliku. Jest to preferowane podejście przy pracy z zapisanymi stronami internetowymi, które odnoszą się do lokalnych zasobów CSS, JavaScript i obrazów.
Poniższy przykład konwertuje przykładową stronę internetową na PDF:
:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/html-file-to-pdf.jsimport { 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");
Przykładowa strona HTML, jak pokazuje ją Google Chrome. Pobierz tę i podobne strony z witryny File Samples: https://filesamples.com/samples/code/html/sample2.html
IronPDF zachowuje wygląd oryginalnego dokumentu HTML i utrzymuje funkcjonalność linków, formularzy i innych interaktywnych elementów. Ta wierność rozciąga się na złożone strony zawierające akapity, listy, obrazy, hiperłącza i skrypty po stronie klienta.
Ten PDF został wygenerowany z przykładu pliku HTML powyżej. Porównaj jego wygląd z poprzednim obrazem — IronPDF zachowuje układ z wysoką wiernością.
IronPDF obsługuje strony, które wykraczają poza prosty markup. Poniższy przykład konwertuje stronę z licznymi zewnętrznymi plikami CSS, obrazami i zasobami skryptów:
:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/html-complex-file-to-pdf.jsimport { 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");
});
Jeśli wygląda dobrze w Google Chrome, będzie wyglądać dobrze po przekonwertowaniu na PDF. Obejmuje to projekty stron intensywnie korzystających z CSS i renderowanych przez JavaScript.
Jak utworzyć PDF z URL-a? {#create-PDF-from-url}
PdfDocument.fromUrl pobiera i renderuje aktywną stronę internetową jako PDF. Przekaż dowolny publicznie dostępny URL jako argument. Silnik renderujący Chrome w IronPDF pobiera stronę, ładuje wszystkie zasoby i tworzy PDF o idealnej jakości — nie jest wymagane ręczne pobieranie HTML.
:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/url-to-pdf.jsimport { 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");
Artykuł z Wikipedii dotyczący formatu PDF, jaki wygląda w przeglądarce zgodnej ze standardami.
**PDF wygenerowany po wywołaniu PdfDocument.fromUrl na artykule Wikipedii. Zwróć uwagę na jego dużą zgodność z oryginalną stroną internetową.
ChromePdfRenderOptions.Jak utworzyć PDF z archiwum Zip? {#create-pdf-from-zip}
PdfDocument.fromZip konwertuje wybrany plik HTML zawarty w archiwum ZIP na PDF. Jest to szczególnie przydatne podczas dystrybucji samodzielnych projektów HTML, które łączą swoje zasoby HTML, CSS i obrazy razem.
Dla tego przykładu załóż, że katalog projektu zawiera plik ZIP o następującej strukturze:
//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/zip-structure.txt
html-zip.zip
├─ index.html
├─ style.css
├─ logo.pngPlik index.html zawiera:
//: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 dla 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 dla Node.js">
</a>
</body>
</html>A style.css deklaruje reguły układu strony i czcionki:
//: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;
}
Przykładowy obraz wewnątrz hipotetycznego pliku ZIP HTML.
Przy wywoływaniu fromZip, należy określić ścieżkę do pliku ZIP jako pierwszy argument i obiekt konfiguracji jako drugi. Ustaw właściwość mainHtmlFile na nazwę pliku HTML w archiwum, który powinien zostać przekonwertowany:
:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/zip-to-pdf.jsimport { 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");
});
**Tworzenie PDF za pomocą PdfDocument.fromZip. Funkcja skutecznie renderuje kod HTML z pliku ZIP wraz z jego dołączonymi zasobami.
IronSuite odgrywa kluczową rolę w naszej działalności. Są to narzędzia zwiększające wydajność w całej firmie, w tym tworzenie planów pięter i poprawa zarządzania zapasami.
Jakie zaawansowane opcje renderowania obsługuje IronPDF? {#advanced-rendering-options}
Interfejs ChromePdfRenderOptions ujawnia właściwości do granularnej personalizacji zachowania renderowania PDF. Te ustawienia stosują się przed wygenerowaniem PDF i obejmują układ, wygląd wizualny oraz szczególne przypadki dla dynamicznych treści.
IronPDF stosuje domyślne ustawienia renderowania do każdej konwersji. Pobierz te domyślne wartości za pomocą funkcji defaultChromePdfRenderOptions:
:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/default-options.jsimport { defaultChromePdfRenderOptions } from "@ironsoftware/ironpdf";
// Retrieve a ChromePdfRenderOptions object with default settings
var options = defaultChromePdfRenderOptions();
Zmodyfikuj właściwości zwróconego obiektu według potrzeby i przekaż go do parametru renderOptions dowolnej metody konwersji.
Jak dodać nagłówki i stopki? {#add-headers-footers}
Właściwości textHeader i textFooter przyczepiają niestandardowe treści tekstowe do każdej strony nowo renderowanego PDF. Poniższy przykład tworzy PDF z głównej strony wyszukiwania Google z niestandardowym nagłówkiem i stopką, każda z użyciem innej czcionki:
:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/custom-headers-footers.jsimport { 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");
});
PDF wygenerowany ze strony głównej Google z zastosowanym niestandardowym tekstowym nagłówkiem i stopką za pomocą textHeader i textFooter.
Dla bogatszych układów nagłówka i stopki, użyć zamiast tego właściwości htmlHeader i htmlFooter. Akceptują one surowe fragmenty HTML, dając pełną kontrolę nad typografią, obrazami i wyrównaniem. Poniższy przykład wyśrodkowuje URL strony na nagłówku pisanym pogrubioną czcionką oraz osadza obraz logo w stopce:
:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/html-headers-footers.jsimport { 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");
});
IronPDF obsługuje nagłówki i stopki oparte na HTML, dając pełną kontrolę nad marką i układem na każdej stronie.
Jak kontrolować rozmiar strony, orientację i marginesy? {#page-size-orientation-margins}
Właściwości margin, paperSize, fitToPaperMode, paperOrientation, i grayScale na ChromePdfRenderOptions kontrolują fizyczny układ każdej renderowanej strony. Poniższy przykład konwertuje stronę główną Google z niestandardowymi marginesami, orientacją krajobrazową A5 i wyjściem w odcieniach szarości:
:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/page-size-orientation.jsimport { 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");
});
Enumeracja PaperSize obejmuje standardowe rozmiary papieru takie jak A4, A5, Letter, i Legal. Enumeracja PdfPaperOrientation wspiera Portrait i Landscape. Te ustawienia dają precyzyjną kontrolę nad wymiarami wyjściowymi dla dokumentów gotowych do druku.
Jak obsłużyć dynamiczne strony internetowe? {#dynamic-web-pages}
Strony ładujące treść asynchronicznie — przez zegary JavaScript, lazy loading lub wywołania API — mogą nie być w pełni renderowane w momencie, gdy silnik IronPDF je rejestruje. Mechanizm WaitFor skonfigurowany poprzez właściwość waitFor na ChromePdfRenderOptions, instruuje renderer Chrome, aby pauzował dopóki określone warunki nie zostaną spełnione, przed przechwyceniem strony.
Poniższy blok kodu ustawia IronPDF na czekanie 20 sekund przed zarejestrowaniem treści strony:
:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/waitfor-delay.jsimport { 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");
});
Alternatywnie, skonfiguruj IronPDF, aby czekał, aż określony element DOM pojawi się przed renderowaniem. To jest przydatne w przypadku stron, gdzie treść jest wstrzykiwana po zakończeniu montowania przez framework JavaScript:
:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/waitfor-element.jsimport { 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");
});
Strategia WaitForType.HtmlElement używa standardowego selektora zapytań CSS. Renderer sprawdza obecność elementu, dopóki nie miną maxWaitTime milisekundy lub element zostanie znaleziony — cokolwiek nastąpi pierwszy.
Jak wygenerować PDF z szablonu HTML? {#html-template-to-PDF}
Powszechnym wzorcem automatyzacji w świecie rzeczywistym jest generowanie serii PDF z współdzielonego szablonu HTML, zastępującego wartości wstawiane danymi z bazy danych, API lub arkusza kalkulacyjnego. Metoda replaceText IronPDF na PdfDocument obsługuje to bezpośrednio.
Szablon faktury poniżej (dostosowany z publicznie dostępnego szablonu faktury CodePen) używa nawiasów klamrowych jako symboli zastępczych, takich jak {COMPANY-NAME}, {FULL-NAME}, i {INVOICE-NUMBER} dla podmienialnej treści:
Przykładowy szablon faktury z znacznikami zastępczymi. Kod JavaScript zastąpi każdy znacznik prawdziwymi danymi przed zapisaniem dokumentu jako PDF.
Poniższy kod ładuje szablon, zastępuje każdy znacznik danymi testowymi i zapisuje wynik jako 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"));//: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"));Powyższy kod definiuje trzy asynchroniczne funkcje pomocnicze:
getTemplateHtml: Ładuje plik HTML do obiektuPdfDocumentużywającPdfDocument.fromHtml.addTemplateData: WywołujePdfDocument.replaceText, aby zastąpić klucz symbolu zastępczego jego rzeczywistą wartością danych.generatePdf: Zapisuje ukończonyPdfDocumentna wskazanej ścieżce pliku.
Każde wywołanie replaceText operuje bezpośrednio na pamięć operacyjną PDF, więc wielu zamien można łączyć bez ponownego ładowania dokumentu z dysku. Wygenerowany PDF zachowuje wszystkie style CSS, czcionki i układ z oryginalnego szablonu.
Ukończony PDF faktury z wartościami zastępczymi zastąpionymi prawdziwymi danymi. Style CSS i układ z oryginalnego szablonu są zachowane w całości.
To podejście dobrze skaluje się dla masowego generowania dokumentów. Wywołaj getTemplateHtml raz na rekord, aby utworzyć świeży PdfDocument dla każdego pliku wyjściowego, następnie łańcuch wywołań addTemplateData dla danych danego rekordu przed wywołaniem generatePdf.
Jakie są kolejne kroki? {#next-steps}
Ten samouczek obejmuje podstawowe metody konwersji HTML na PDF i najczęściej używane opcje renderowania w IronPDF dla Node.js. Poniższe tematy rozszerzają to, czego się tu nauczyłeś, na bardziej wyspecjalizowane obszary.
- Edytuj i Stempluj PDF w Node.js — Zastosowanie pieczątek, adnotacji i edycji tekstu do istniejących dokumentów PDF programowo.
- Scalaj i Dziel PDF w Node.js — Scalaj wiele PDF w jeden dokument lub dziel jeden PDF na oddzielne strony.
- Dodaj znaki wodne do PDF w Node.js — Dodawanie znaków wodnych, tekstowych lub graficznych na każdej stronie PDF z precyzyjną kontrolą pozycji.
- Dokumentacja API IronPDF Node.js — Przeglądaj pełne API dla
PdfDocument,ChromePdfRenderOptions,WaitFor,AffixFontsi wszystkich innych eksportowanych klas i interfejsów. - Uzyskaj darmowy klucz licencyjny na próbną wersję — Generuj graficznej jakości PDF bez znaków wodnych przez aktywację bezpłatnej licencji próbnej na 30 dni.
Często Zadawane Pytania
Jak konwertować HTML na PDF w Node.js?
Użyj biblioteki IronPDF. Zainstaluj ją za pomocą npm install @ironsoftware/ironpdf, a następnie wywołaj PdfDocument.fromHtml z ciągiem HTML lub ścieżką do pliku, lub PdfDocument.fromUrl z adresem strony WWW. Zapisz wynik za pomocą PdfDocument.saveAs.
Jak konwertować ciąg HTML na PDF w Node.js?
Wywołaj PdfDocument.fromHtml z ciągiem HTML jako argumentem. Metoda zwraca Obietnicę, która rozwiązuje się do instancji PdfDocument. Połącz saveAs ze skutkiem, aby zapisać PDF na dysku.
Jak konwertować lokalny plik HTML na PDF w Node.js?
Przekaż prawidłową ścieżkę systemu plików do PdfDocument.fromHtml zamiast ciągu HTML. IronPDF rozwiązuje względne ścieżki CSS, obrazów i skryptów w taki sam sposób, jak przeglądarka podczas ładowania pliku.
Jak konwertować URL na PDF w Node.js?
Wywołaj PdfDocument.fromUrl z docelowym URL. IronPDF pobiera stronę, używając swojego silnika renderującego Chrome i produkuje idealnie odwzorowany PDF. Docelowy URL musi być publicznie dostępny z hosta uruchamiającego IronPDF.
Jak dodać nagłówki i stopki do PDF w Node.js?
Ustaw właściwości textHeader i textFooter na obiekcie ChromePdfRenderOptions dla prostych nagłówków i stopek tekstowych. Dla bogatszych układów użyj htmlHeader i htmlFooter z surowymi fragmentami HTML. Przekaż obiekt opcji do parametru renderOptions dowolnej metody konwersji.
Jak zmienić rozmiar i orientację strony w IronPDF dla Node.js?
Ustaw options.paperSize na wartość z enum PaperSize (na przykład PaperSize.A4 lub PaperSize.Letter) i ustaw options.paperOrientation na PdfPaperOrientation.Portrait lub PdfPaperOrientation.Landscape. Przekaż skonfigurowane opcje do metody konwersji.
Jak obsłużyć dynamiczną zawartość JavaScript podczas konwersji do PDF?
Użyj właściwości waitFor na ChromePdfRenderOptions. Ustaw type na WaitForType.RenderDelay i podaj opóźnienie w milisekundach albo ustaw type na WaitForType.HtmlElement i podaj selektor zapytania CSS. IronPDF wstrzyma renderowanie, aż warunek zostanie spełniony.
Jak konwertować plik HTML wewnątrz archiwum ZIP na PDF?
Wywołaj PdfDocument.fromZip z ścieżką do pliku ZIP jako pierwszym argumentem i obiektem z opcjami jako drugim. Ustaw właściwość mainHtmlFile na nazwę pliku HTML wewnątrz archiwum, który ma być skonwertowany.
Jak usunąć znak wodny IronPDF z wygenerowanych PDF?
Zastosuj ważny klucz licencyjny do konfiguracji globalnej przed wywołaniem jakiejkolwiek metody konwersji. Pobierz obiekt konfiguracji za pomocą IronPdfGlobalConfig.getConfig() i ustaw config.licenseKey na swój klucz. Bezpłatna licencja próbna jest dostępna na ironpdf.com.
Jak generować PDF z szablonu HTML w Node.js?
Załaduj szablon przy użyciu PdfDocument.fromHtml, a następnie wywołaj PdfDocument.replaceText dla każdego symbolu zastępczego w szablonie, podając ciąg symbolu zastępczego i jego wartość zastępującą. Po zakończeniu wszystkich podstawień wywołaj saveAs, aby zapisać ostateczny PDF.





