Node.js Kullanarak PDF Dosyalarını Tek Bir PDF'ye Nasıl Birleştirilir
IronPDF, Node.js'de birkaç satır kodla birden fazla PDF dosyasını tek bir belge haline getirmenizi sağlar. Her dosyayı PdfDocument.fromFile() ile yükleyin, diziyi PdfDocument.merge() için iletin ve sonucu toFile() ile kaydedin.
Hızlı Başlangıç: PDF Dosyalarını Birleştirme
//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-merge-pdf/quickstart-merge.js
// Install: npm install ironpdf
const IronPdf = require('ironpdf');
async function quickMerge() {
const docs = await Promise.all([
IronPdf.PdfDocument.fromFile('doc1.pdf'),
IronPdf.PdfDocument.fromFile('doc2.pdf'),
IronPdf.PdfDocument.fromFile('doc3.pdf'),
]);
const merged = await IronPdf.PdfDocument.merge(docs);
await merged.toFile('merged-output.pdf');
}
quickMerge();//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-merge-pdf/quickstart-merge.js
// Install: npm install ironpdf
const IronPdf = require('ironpdf');
async function quickMerge() {
const docs = await Promise.all([
IronPdf.PdfDocument.fromFile('doc1.pdf'),
IronPdf.PdfDocument.fromFile('doc2.pdf'),
IronPdf.PdfDocument.fromFile('doc3.pdf'),
]);
const merged = await IronPdf.PdfDocument.merge(docs);
await merged.toFile('merged-output.pdf');
}
quickMerge();Asgari İş Akışı (5 adım)
- IronPDF'i yükleyin:
npm install ironpdf - Kütüphaneyi içe aktarın:
const IronPdf = require('ironpdf') - Her PDF dosyasını
PdfDocument.fromFile()ile yükleyin - Yüklenen belgeleri
PdfDocument.merge()ile birleştirin - Sonucu
toFile()ile kaydedin
IronPDF, herhangi bir sistem düzeyinde PDF aracı gerektirmeden HTML'den PDF'ye dönüşüm, belge montajı ve PDF düzenlemesi yapan bir Node.js PDF işleme kütüphanesidir. Belgeleri birleştirirken, her kaynak dosyadaki yazı tiplerini, resimleri, gömülü formları ve sayfa geometrisini korur.
Üretime dağıtmadan önce, deneme filigranını kaldırmak ve tam çıktıyı etkinleştirmek için IronPDF lisans anahtarınızı yapılandırın. İşletim sisteminiz için işleme motorunu kurmak amacıyla IronPdfEngine yapılandırma kılavuzunu takip edin.
Node.js'de Birden Fazla PDF Dosyasını Nasıl Birleştirebilirim?
PdfDocument.merge(), PdfDocument nesnelerinden oluşan bir diziyi kabul eder ve dizideki kaynak belgelerin görünme sırasına göre her sayfayı içeren yeni bir belge döndürür. İşlem tahrip edici değildir; orijinal dosya nesneleri değiştirilmez.
//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-merge-pdf/merge-pdfs.js
const IronPdf = require('ironpdf');
async function mergePdfs(outputFilePath, inputFiles) {
// Load all source documents in parallel
const pdfDocs = await Promise.all(
inputFiles.map(file => IronPdf.PdfDocument.fromFile(file))
);
// Combine into one document, preserving page order
const mergedPdf = await IronPdf.PdfDocument.merge(pdfDocs);
// Write the result to disk
await mergedPdf.toFile(outputFilePath);
console.log(`Merged PDF saved to ${outputFilePath}`);
}
(async () => {
const inputFiles = ['report-jan.pdf', 'report-feb.pdf', 'report-mar.pdf'];
await mergePdfs('quarterly-report.pdf', inputFiles);
})();//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-merge-pdf/merge-pdfs.js
const IronPdf = require('ironpdf');
async function mergePdfs(outputFilePath, inputFiles) {
// Load all source documents in parallel
const pdfDocs = await Promise.all(
inputFiles.map(file => IronPdf.PdfDocument.fromFile(file))
);
// Combine into one document, preserving page order
const mergedPdf = await IronPdf.PdfDocument.merge(pdfDocs);
// Write the result to disk
await mergedPdf.toFile(outputFilePath);
console.log(`Merged PDF saved to ${outputFilePath}`);
}
(async () => {
const inputFiles = ['report-jan.pdf', 'report-feb.pdf', 'report-mar.pdf'];
await mergePdfs('quarterly-report.pdf', inputFiles);
})();Promise.all(), kaynak dosyaları teker teker yüklemek yerine paralel olarak yükler, ki bu daha büyük koleksiyonları işlerken önemlidir. merge() çağrısı, belgeleri dizi sırasına göre birleştirir, bu nedenle dosyaları dizide istediğiniz çıktı sırasına göre yerleştirin.
fromFile() yöntemi, yolları doğrudan komut dosyasının kendisine göre çözümlemez.Kodun Her Bölümü Ne Yapar?
PdfDocument.fromFile(): Diskteki bir PDF'i okur ve birPdfDocumentnesnesi döndürür. Tam yöntem imzaları için IronPDF for Node.js API Referansına bakın.Promise.all(): Tüm dosya yükleme işlemlerini aynı anda başlatır, çok belgeli birleştirmelerin toplam yükleme süresini azaltır. Bu kalıp, çok iş parçacıklı ve eşzamanlı PDF oluşturma senaryolarına da uygundur.PdfDocument.merge(): Yüklenmiş belgelerin dizisini tek birPdfDocumenthalinde birleştirir ve her kaynağın tüm biçimlendirmesini, resimlerini ve gömülü içeriğini muhafaza eder.toFile(): Birleşik belgeyi belirtilen yola yazar. Çıktı dosya boyutunu azaltmak gerektiğinde PDF sıkıştırma ile bunu birleştirin.
Her PDF'den Belirli Sayfaları Nasıl Birleştiririm?
Her kaynak belgeden her sayfayı geçirmek her zaman hedef değildir. Her bir giriş dosyasından seçici sayfa aralıklarını birleştirmek için, belgeleri merge()'a iletmeden önce istenen sayfaları çıkarın.
//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-merge-pdf/merge-specific-pages.js
const IronPdf = require('ironpdf');
// Each entry specifies a file and the range of pages to include (zero-indexed)
const pageRanges = [
{ file: 'contract.pdf', startPage: 0, endPage: 2 },
{ file: 'appendix.pdf', startPage: 0, endPage: 0 },
{ file: 'signature.pdf', startPage: 0, endPage: 0 },
];
async function mergeSpecificPages(outputFile, ranges) {
const pdfsToMerge = [];
for (const range of ranges) {
const pdf = await IronPdf.PdfDocument.fromFile(range.file);
// extractPages returns a new PdfDocument with only the specified page range
const pages = pdf.extractPages(range.startPage, range.endPage);
pdfsToMerge.push(pages);
}
const merged = await IronPdf.PdfDocument.merge(pdfsToMerge);
await merged.toFile(outputFile);
}
mergeSpecificPages('assembled-contract.pdf', pageRanges);//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-merge-pdf/merge-specific-pages.js
const IronPdf = require('ironpdf');
// Each entry specifies a file and the range of pages to include (zero-indexed)
const pageRanges = [
{ file: 'contract.pdf', startPage: 0, endPage: 2 },
{ file: 'appendix.pdf', startPage: 0, endPage: 0 },
{ file: 'signature.pdf', startPage: 0, endPage: 0 },
];
async function mergeSpecificPages(outputFile, ranges) {
const pdfsToMerge = [];
for (const range of ranges) {
const pdf = await IronPdf.PdfDocument.fromFile(range.file);
// extractPages returns a new PdfDocument with only the specified page range
const pages = pdf.extractPages(range.startPage, range.endPage);
pdfsToMerge.push(pages);
}
const merged = await IronPdf.PdfDocument.merge(pdfsToMerge);
await merged.toFile(outputFile);
}
mergeSpecificPages('assembled-contract.pdf', pageRanges);extractPages(startPage, endPage) sıfır bazlı sayfa dizinlerini kabul eder. 0, 0 sadece ilk sayfayı çıkarırken, 0, 2 ilk üç sayfayı çıkarır. Döngü, ranges'de görünen sırayla sayfa aralığı belgelerinin bir dizisini oluşturur, ardından merge() onları son çıktıya birleştirir.
Bu kalıp, ayrı dosyalarda saklanan bir imza sayfası, bir ek ve bir ön kapaktan sözleşmeler düzenlerken faydalıdır. Her kaynaktan diskte dosyaları çoğaltmadan tam olarak önemli sayfaları toplayabilirsiniz.
IronSuite, operasyonlarımızda kritik bir rol oynar. Bunlar, iş süreçlerinde verimliliği artıran, kat planları oluşturmak ve envanter yönetimini geliştirmek gibi araçlardır.
Birleştirilmiş Bir PDF'ye Üstbilgi ve Altbilgi Nasıl Eklenir?
Birleştirdikten sonra, tüm sayfalara tutarlı başlıklar ve alt bilgileri uygulamak için oluşan belgede addHtmlHeader() ve addHtmlFooter() çağrısı yapın. Bu yöntemler bir HTML dizesi ve bir seçenekler nesnesi kabul eder.
//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-merge-pdf/merge-with-headers-footers.js
const IronPdf = require('ironpdf');
async function mergeWithHeadersFooters(inputFiles, outputFile) {
const docs = await Promise.all(
inputFiles.map(f => IronPdf.PdfDocument.fromFile(f))
);
const mergedPdf = await IronPdf.PdfDocument.merge(docs);
// Apply a styled header to every page
await mergedPdf.addHtmlHeader('<h3 style="color:#333;">Quarterly Report</h3>', {
height: 25,
drawDividerLine: true,
});
// Apply a page-numbering footer
await mergedPdf.addHtmlFooter('<p style="font-size:10px;">Page {page} of {total-pages}</p>', {
height: 20,
drawDividerLine: true,
});
await mergedPdf.toFile(outputFile);
}
mergeWithHeadersFooters(['q1.pdf', 'q2.pdf', 'q3.pdf'], 'annual-report.pdf');//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-merge-pdf/merge-with-headers-footers.js
const IronPdf = require('ironpdf');
async function mergeWithHeadersFooters(inputFiles, outputFile) {
const docs = await Promise.all(
inputFiles.map(f => IronPdf.PdfDocument.fromFile(f))
);
const mergedPdf = await IronPdf.PdfDocument.merge(docs);
// Apply a styled header to every page
await mergedPdf.addHtmlHeader('<h3 style="color:#333;">Quarterly Report</h3>', {
height: 25,
drawDividerLine: true,
});
// Apply a page-numbering footer
await mergedPdf.addHtmlFooter('<p style="font-size:10px;">Page {page} of {total-pages}</p>', {
height: 20,
drawDividerLine: true,
});
await mergedPdf.toFile(outputFile);
}
mergeWithHeadersFooters(['q1.pdf', 'q2.pdf', 'q3.pdf'], 'annual-report.pdf');{page} ve {total-pages} yer tutucuları, birleştirilmiş belgenin sayfa sayısına karşı render zamanı çözülür. Başlık ya da alt bilgiyi sayfa içeriğinden görsel olarak ayırmak için drawDividerLine: true kullanın.
Birleşimden sonra üstbilgi ve altbilgi uygulamak, birleşik belgedeki her sayfanın, geldiği kaynak dosya ne olursa olsun, aynı muameleyi görmesini sağlar. Tam üstbilgi ve altbilgi yapılandırma seçenekleri için HTML üstbilgi ve altbilgi örneklerine bakın.
Birleştirilmiş Bir PDF Nasıl Parola İle Korunur?
Birleştirmeden sonra şifre koruması ve izin kısıtlamaları uygulamak için güvenlik seçenekleri nesnesiyle saveAs() çağrısı yapın. Bu, birleşik belgeye yetkisiz erişimi önler.
//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-merge-pdf/merge-with-security.js
const IronPdf = require('ironpdf');
async function mergeWithSecurity(inputFiles, outputFile) {
const docs = await Promise.all(
inputFiles.map(f => IronPdf.PdfDocument.fromFile(f))
);
const mergedPdf = await IronPdf.PdfDocument.merge(docs);
// Restrict the merged document to print-only access
await mergedPdf.saveAs(outputFile, {
userPassword: 'viewerpass',
ownerPassword: 'adminpass',
allowUserAnnotations: false,
allowUserCopyPasteContent: false,
allowUserFormData: false,
allowUserPrinting: true,
});
}
mergeWithSecurity(['invoice-1.pdf', 'invoice-2.pdf'], 'secured-invoices.pdf');//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-merge-pdf/merge-with-security.js
const IronPdf = require('ironpdf');
async function mergeWithSecurity(inputFiles, outputFile) {
const docs = await Promise.all(
inputFiles.map(f => IronPdf.PdfDocument.fromFile(f))
);
const mergedPdf = await IronPdf.PdfDocument.merge(docs);
// Restrict the merged document to print-only access
await mergedPdf.saveAs(outputFile, {
userPassword: 'viewerpass',
ownerPassword: 'adminpass',
allowUserAnnotations: false,
allowUserCopyPasteContent: false,
allowUserFormData: false,
allowUserPrinting: true,
});
}
mergeWithSecurity(['invoice-1.pdf', 'invoice-2.pdf'], 'secured-invoices.pdf');userPassword belgeyi açmak için gereklidir; ownerPassword izin ayarlarını kendileri kontrol eder. Diğer izin bayraklarını devre dışı bırakırken allowUserPrinting: true ayarlamak, alıcıların belgeyi yazdırmasına izin verir, fakat düzenleme, kopyalama ve açıklama yapmalarını engeller. Kullanılabilir izin bayraklarının tam listesi için IronPDF Node.js API Referansına bakın.
fromFile() ile yüklerken sağlayın. Şifresini vermeden şifreli bir belgeyi birleştirme girişimi bir hataya neden olur.PDF'leri Nasıl Birleştirir ve Dijital İmza Eklerim?
PDF'leri birleştirip hemen ardından imzalamak, tüm kaynak içeriği kapsayan tek bir imzalı belge üretir. applySignature(), birleşik çıktıya dijital sertifika eklemek için merge() sonrasında uygulayın.
//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-merge-pdf/merge-with-signature.js
const IronPdf = require('ironpdf');
async function mergeAndSign(inputFiles, outputFile, pfxPath, pfxPassword) {
const docs = await Promise.all(
inputFiles.map(f => IronPdf.PdfDocument.fromFile(f))
);
const mergedPdf = await IronPdf.PdfDocument.merge(docs);
// Attach a digital signature using a PFX certificate
await mergedPdf.applySignature(pfxPath, pfxPassword);
await mergedPdf.toFile(outputFile);
}
mergeAndSign(
['section-a.pdf', 'section-b.pdf'],
'signed-report.pdf',
'certificate.pfx',
'certpass'
);//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-merge-pdf/merge-with-signature.js
const IronPdf = require('ironpdf');
async function mergeAndSign(inputFiles, outputFile, pfxPath, pfxPassword) {
const docs = await Promise.all(
inputFiles.map(f => IronPdf.PdfDocument.fromFile(f))
);
const mergedPdf = await IronPdf.PdfDocument.merge(docs);
// Attach a digital signature using a PFX certificate
await mergedPdf.applySignature(pfxPath, pfxPassword);
await mergedPdf.toFile(outputFile);
}
mergeAndSign(
['section-a.pdf', 'section-b.pdf'],
'signed-report.pdf',
'certificate.pfx',
'certpass'
);applySignature() yöntemi, PDF meta verilerine sertifikayı gömer, böylece okuyucular belge bütünlüğünü doğrulayabilir. Bu iş akışı, birden fazla bölümün birleştirildiği ve ardından dağıtımdan önce birlikte imzalandığı sözleşme montajı hatlarında yaygındır. Sertifika tabanlı imzalamayı tam bir şekilde ele almak için, dijital imzalar örneklerine bakın.
Yaygın PDF Birleştirme Hatalarını Nasıl Gideririm?
Birleşme sırasında çoğu hata, dört kategoriye ayrılır: eksik dosyalar, bellek tükenmesi, bozuk girişler ve izin sorunları. Aşağıdaki tablo en sık nedenleri ve her biri nasıl ele alınacağını listeler.
| Hata | Muhtemel Sebep | Çözüm |
|---|---|---|
| Dosya bulunamadı | Yanlış yol veya çalışma dizini uyumsuzluğu | Mutlak yollar kullanın veya süreç çalışma dizinini doğrulayın |
| JavaScript yığını bellek dışında | Birçok büyük PDF'nin aynı anda yüklenmesi | Node.js bellek artırın: node --max-old-space-size=4096 script.js |
| Geçersiz veya bozuk PDF | Kaynak dosya hasarlı veya geçerli bir PDF değil | İşlemden önce PDF okuyucuyla kaynak dosyaları doğrulayın |
| İzin reddedildi | Girişte okuma erişimi yok veya çıktıda yazma erişimi yok | İşletim sisteminde dosya ve dizin izinlerini kontrol edin |
| Şifreli kaynak PDF | Giriş PDF'si açmak için bir parola gerektirir | Şifreyi fromFile()'ye ikinci argüman olarak geçin |
Ortam özelindeki kurulum sorunları için IronPDF değişiklik günlüğü belgelenmiş sorunlar ve düzeltmeler içerir. Yukarıdaki tabloyu kontrol ettikten sonra sorunlar devam ederse, kütüphaneden tam hata mesajını yüzeye çıkarmak için bir try-catch bloğuna sarın.
fromFile() çağrı yapmadan önce doğrulayın. Tek bir eksik dosya, tüm Promise.all() çağrısının reddedilmesine yol açar, birleştirmeyi iptal eder.Node.js yalnız başına ön uç yol doğrulaması için yararlı araçlar sağlar. Node.js fs.promises.access yöntemi, bir dosyanın okunabilir olup olmadığını kontrol etmenizi ve ardından IronPDF'e iletmenizi sağlar. Benzer birleşme hata senaryolarını topluluk geliştiricilerinin nasıl ele aldığına dair sorular için, Node.js'de PDF'leri birleştirme konusunda Ekstra bilgi için bilgi sağlar.
Node.js'de PDF Birleştirmenin Bir Sonraki Adımları Nelerdir?
Yukarıdaki örnekler, en yaygın birleştirme senaryolarını kapsar: temel dosya kombinasyonu, sayfa aralığı seçimi, üstbilgi ve altbilgi enjeksiyonu, parola koruması ve dijital imzalama. IronPDF ayrıca birleşmiş sayfalarda PDF formlarını yönetmeyi, birleşik belgeye yeni içerik mühürlemeyi ve önizleme üretimi için nihai çıktının rasterize edilmiş görüntülerini üretmeyi destekler.
30 günlük ücretsiz denemenizi başlatın ve filigransız birleşmeyi test edin veya dağıtıma hazır olduğunuzda lisans seçeneklerini görüntüleyin.
IronPDF'nin başka neler yapabileceğini görmeye hazır mısınız? Tam API uygulaması ve ek nasıl yapılır kılavuzları için IronPDF for Node.js belgelerine göz atın.
Sıkça Sorulan Sorular
Node.js'te birden fazla PDF dosyasını tek bir dosyada nasıl birleştiririm?
Her dosyayı PdfDocument.fromFile() ile yükleyin, sonuçları bir diziye toplayın, diziyi PdfDocument.merge()'e aktarın ve çıktıyı toFile() ile kaydedin. Üç veya daha fazla belge birleştirirken dosyaları paralel olarak yüklemek için Promise.all() kullanın.
IronPDF, PDF dosyalarını birleştirirken biçimlendirmeyi korur mu?
Evet. IronPDF, her kaynak belgeden yazı tiplerini, resimleri, gömülü formları ve sayfa geometrisini korur. Birleştirilen çıktı, giriş dizisinde kaynak dosyaların göründüğü sırada, her sayfanın özgün düzenini muhafaza eder.
Her PDF'den sadece belirli sayfaları nasıl birleştiririm?
Yüklenen her bir belgeden önce PdfDocument.merge() işlevine geçmeden, extractPages(startPage, endPage) çağrısını yapın. Sayfa indeksleri sıfırdan başlar, bu yüzden ilk sayfa indeks 0'dır. Döndürülen belge, yalnızca belirtilen aralığı içerir.
Birleştirilmiş bir PDF dosyasına üstbilgi ve altbilgi ekleyebilir miyim?
Evet. Birleştirdikten sonra, ortaya çıkan belgede addHtmlHeader() ve addHtmlFooter() çağırın. Her iki yöntem de bir HTML dizesi ve bir seçenekler nesnesi kabul eder. Otomatik sayfa numaralandırma için {page} ve {total-pages} yer tutucularını kullanın.
Node.js ile birleştirilmiş bir PDF'yi parolayla nasıl koruma altına alabilirim?
userPassword, ownerPassword ve allowUserPrinting gibi izin bayraklarını belirten bir güvenlik seçenekleri nesnesi ile saveAs() çağırın. Belgeyi açmak için userPassword gereklidir; ownerPassword ise izin ayarlarını kontrol eder.
Bir dosya bulunamadı hatasıyla birleştirme başarısız olursa ne yapmalıyım?
Tüm giriş dosya yollarının Node.js süreci çalışma dizinine göre doğru olduğundan emin olun veya mutlak yolları kullanın. Her dosyanın okunabilir olduğunu doğrulamak için fs.promises.access() kullanın ve ardından PdfDocument.fromFile()'i çağırın.
Kaynak PDF'lerden biri şifreli ise ne olur?
Bir şifresi olan bir PDF'yi şifresini sağlamadan yüklemeye çalışmak bir hata verecek ve tüm Promise.all() çağrısını reddedecektir. Birleştirmeden önce fromFile() fonksiyonuna belgenin şifresini ikinci argüman olarak sağlayın.
IronPDF ile PDF birleştirmek için lisans anahtarına ihtiyacım var mı?
IronPDF, geliştirme sırasında bir lisans anahtarı olmadan çalışır, ancak çıktı belgelerine bir deneme filigranı ekler. Filigranı kaldırmak ve tam işlevselliği etkinleştirmek için üretime dağıtmadan önce geçerli bir lisans anahtarını yapılandırın.





