Node.js Kullanarak PDF Dosyaları Nasıl Sıkıştırılır
Büyük PDF dosyaları dosya transferlerini yavaşlatır, depolama maliyetlerini artırır ve belge ağırlıklı uygulamalarda performansı düşürür. IronPDF for Node.js, belgede gömülü görüntü kalitesini azaltan ve isteğe bağlı olarak görüntüleri görünür boyutlarına yeniden ölçeklendiren compressSize yöntemini sağlar. Bu, belgenin yapısını değiştirmeden dosya boyutunu %50 veya daha fazla azaltabilir.
Hızlı Başlangıç: Node.js'de PDF Sıkıştırma
Paketi yükleyin, bir PDF dosyası açın ve 1 ile 100 arasında bir kalite değeriyle compressSize metodunu çağırın:
```javascript {.line-numbers} //:path=/static-assets/pdf/content-code-examples/how-to/nodejs-compress-pdf/quickstart.js import { PdfDocument } from "@ironsoftware/IronPDF";
// Mevcut bir PDF'yi yükleyin const pdf = await PdfDocument.fromFile("report.pdf");
// Gömülü görüntüleri %60 JPEG kalitesine sıkıştır await pdf.compressSize(60);
// Sonucu kaydet await pdf.saveAs("report-compressed.pdf");
<div class="hsg-featured-snippet">
<h3>Asgari İş Akışı (5 adım)</h3>
1. IronPDF'i yükleyin: `npm install @ironsoftware/ironpdf`
2. `PdfDocument` Eğerinden `@ironsoftware/ironpdf` ile içe aktarın
3. `PdfDocument.fromFile(path)` ile kaynak dosyayı yükleyin
4. `await pdf.compressSize(quality)` fonksiyonunu kalite aralığı 1-100 ile çağırın
5. Sonucu `await pdf.saveAs(outputPath)` kullanarak kaydedin
</div>
## Neden PDF Dosya Boyutu Node.js Uygulamaları İçin Önemlidir?
PDF boyutu, iki operasyonel endişeyi doğrudan etkiler: teslimat hızı ve depolama maliyeti. Bir API üzerinden gönderilen 20 MB boyutundaki bir rapor PDF'si, mobil bağlantılarda ölçülebilir bir gecikme ekler. Günlük binlerce belgeyi işleyen toplu işlem hatlarında, hatta %30'luk bir boyut azaltma bile önemli depolama tasarrufu sağlar.
IronPDF'in `compressSize` yöntemi, büyük PDF dosyalarının ana katkıcısı olan gömülü görüntüleri hedef alır. Metin ve vektör grafikleri, PDF nesne seviyesinde iyi sıkıştırılır, ancak orijinal çözünürlükte gömülü raster görüntüler, tipik iş belgelerindeki fazla yükün çoğunu oluşturur. JPEG kalitesinin varsayılandan (genellikle %95-100) %60-85'e düşürülmesi, en az görünür kalite kaybıyla en büyük boyut azaltmasını sağlar.
İpuçlarıKalitesi 80 veya üzerinde olan değerler, normal ekran çözünürlüğünde kaynaktan genellikle ayırt edilemez. Küçük boyutun birincil kısıtlama olduğu arşiv ya da ön izleme kullanım durumları için 60'ın altındaki değerleri yedekte tutun.
## `compressSize` Metodu Nasıl Çalışır?
`compressSize` yöntemi iki parametre kabul eder: `quality` (gerekli, tamsayı 1-100) ve `scaleImages` (isteğe bağlı, boolean). `scaleImages` `false` olduğunda (varsayılan), yöntem her gömülü JPEG'i hedef kalitede yeniden kodlar. `scaleImages` `true` olduğunda, görüntüleri PDF yerleşiminde görünen boyutlarına eşleştirmek için yeniden örnekler ve sayfada küçük ölçekte oluşturulan görüntülerin çözünürlüğünü azaltır.
```javascript {.line-numbers}
//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-compress-pdf/compress-with-scaling.js
import { PdfDocument } from "@ironsoftware/IronPDF";
// Kaynak belgeyi yükleyin
const pdf = await PdfDocument.fromFile("product-catalog.pdf");
// Görüntüleri %90 kaliteye sıkıştır ve görünen boyuta ölçekle
await pdf.compressSize(90, true);
// Optimizasyon yapılmış belgeyi kaydedin
await pdf.saveAs("product-catalog-optimized.pdf");scaleImages bağımsız değişkeni, yüksek DPI taramalarından veya ekran boyutlarından bağımsız olarak tam çözünürlükte görüntüleri gömülü HTML şablonlarından oluşturulan PDF'ler için özellikle etkilidir. Etkinleştirildiğinde dosya boyutunu kaliteyi ayarlamanın tek başına yapacağı kadar artırmadan, normal baskı veya ekran çözünürlüklerinde gözle görülür bozulma olmadan azaltabilir.
Yöntem PdfDocument nesnesini yerinde değiştirir. Orijinali korumanız gerekiyorsa, compressSize yöntemini çağırmadan önce belgeyi çoğaltın veya ayrı kayıt yolları kullanın.
Hangi Kalite Ayarını Kullanmalıyım?
Doğru kalite değeri, PDF'nin sıkıştırmadan sonra nasıl kullanılacağına bağlıdır:
- 90-100: Neredeyse kayıpsız. Belge tam zoomda baskı alınacağında veya görüntüleneceğinde kullanın.
- 80-89: Yüksek kalite, dikkate değer ölçüde daha küçük dosya. Çoğu iş belgesi için varsayılan başlangıç noktası.
- 60-79: Orta kalite. Ekran görüntüleme, web dağıtımı ve e-posta ekleri için kabul edilebilir.
- 60'ın altında: Düşük kalite. Ön izleme küçük resimler, arşiv kopyaları veya dosya boyutunun kritik olduğu durumlar için uygun.
Node.js'de Sıkıştırma Sonucunu Nasıl Ölçerim?
Sıkıştırmanın beklenen azaltmayı sağlayıp sağlamadığını doğrulamak, Node.js fs modülünü kullanarak kolaydır. Dosya boyutunu compressSize yöntemini çağırmadan önce ve sonra okuyun, ardından sonucun uygulamanızın gereksinimlerini karşıladığını doğrulamak için oranı hesaplayın.
```javascript {.line-numbers} //:path=/static-assets/pdf/content-code-examples/how-to/nodejs-compress-pdf/measure-compression.js import { PdfDocument } from "@ironsoftware/IronPDF"; import { statSync } from "fs";
const inputPath = "annual-report.pdf"; const outputPath = "annual-report-compressed.pdf";
const beforeBytes = statSync(inputPath).size;
const pdf = await PdfDocument.fromFile(inputPath); await pdf.compressSize(75); await pdf.saveAs(outputPath);
const afterBytes = statSync(outputPath).size; const reduction = (((beforeBytes - afterBytes) / beforeBytes) * 100).toFixed(1);
console.log(Before: ${(beforeBytes / 1024).toFixed(1)} KB); console.log(After: ${(afterBytes / 1024).toFixed(1)} KB); console.log(Reduced by ${reduction}%);
[Node.js `fs.statSync` API](https://nodejs.org/api/fs.html#fsstatsynspath-options) `size` özelliğini bayt olarak içeren bir `Stats` nesnesi döner. Üretim hatları için bu oranı belge başına günlüğe kaydedin, böylece sıkıştırmanın beklenildiği gibi boyutu küçültmediği aykırı durumları belirleyebilirsiniz - genellikle zaten kaynakta sıkıştırılmış taranmış belgeler.
Önemli`IRONPDF_ENGINE_PATH` ortam değişkenini ayarlayın ya da sunucu ortamında dosyaları işlemden önce `IronPdfGlobalConfig` yapılandırın. [Engine kurulum detayları](https://ironpdf.com/nodejs/docs/) için IronPDF Node.js dokümantasyonuna bakın.
## Birden Fazla PDF'yi Toplu Olarak Nasıl Sıkıştırırım?
Üretim uygulamaları, nadiren tek bir belgeyi izole şekilde sıkıştırır. Aşağıdaki örnek `Promise.all` kullanarak bir dizi dosya yolunu eşzamanlı olarak işler, bu da Node.js olay döngüsünün engellemeksizin birden fazla `compressSize` işlemine olanak tanır:
```javascript {.line-numbers}
//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-compress-pdf/batch-compress.js
import { PdfDocument } from "@ironsoftware/IronPDF";
"path" dosyasından yolunu içe aktar;
async function compressPdfFiles(inputPaths, quality = 80) {
const results = await Promise.all(
inputPaths.map(async (inputPath) => {
const pdf = await PdfDocument.fromFile(inputPath);
await pdf.compressSize(quality);
const outputPath = inputPath.replace(".pdf", "-compressed.pdf");
await pdf.saveAs(outputPath);
return { input: inputPath, output: outputPath };
})
);
sonuçları döndür;
}
// Kullanım
const files = ["report-q1.pdf", "report-q2.pdf", "report-q3.pdf"];
const compressed = await compressPdfFiles(files, 75);
compressed.forEach(r => console.log(`Saved: ${r.output}`));PdfDocument.fromFile ve compressSize fonksiyonlarına yapılan her çağrı bağımsızdır, bu da onları paralellenebilmesi için güvenli hale getirir. Çok büyük gruplar için (yüzlerce dosya) Node.js hafıza limitlerini aşmamak için diziyi parçalara ayırmayı düşünün. Node.js döngüsü etkinliği belgelerinde Promise.all ana ipliği engellemeden eşzamanlı I/O nasıl planladığını açıklar.
Sıkıştırmayı Diğer PDF İşlemleri ile Nasıl Birleştiririm?
Sıkıştırma, daha geniş bir belge işleme zincirine doğal olarak uyum sağlar. Yaygın bir desen, bir HTML'den PDF üretmek, bir su işareti veya imza eklemek, ardından teslim öncesi sıkıştırmaktır:
```javascript {.line-numbers} //:path=/static-assets/pdf/content-code-examples/how-to/nodejs-compress-pdf/compress-after-render.js import { PdfDocument, ChromePdfRenderer } from "@ironsoftware/IronPDF";
// HTML'yi PDF olarak render et const renderer = new ChromePdfRenderer(); const pdf = await renderer.renderHtmlAsPdf("
Borç miktarı: $540,00
");// Kaydetmeden önce sıkıştır -- Chrome render edilmiş içerikten görüntü ağırlığını azaltır await pdf.compressSize(85);
// Son belgeyi kaydet await pdf.saveAs("invoice-1042.pdf");
`ChromePdfRenderer` sık sık arka plan görüntülerini ve CSS ile referans verilen kaynakları tam çözünürlükte gömülü olarak kullanır. HTML kaynaklı PDF'ler için dosya boyutu `compressSize` gerçekleştikten sonra tutarlı bir şekilde azalır. IronPDF [HTML'den PDF'ye kılavuzu](https://ironpdf.com/nodejs/tutorials/html-to-pdf/) render yapılandırmasını detaylı şekilde kapsar.
[Dijital imzlere](https://ironpdf.com/nodejs/examples/digitally-sign-a-pdf/) da ihtiyaç duyan belgeler için imzayı sıkıştırmadan sonra uygulayın. İmza, belgenin bayt akışını kilitler ve daha fazla değişiklik imzayı geçersiz kılar.
Çok sayfalı belgelerle çalışırken, onları sıkıştırmadan önce [`PdfDocument.merge()`](https://ironpdf.com/nodejs/examples/merge-pdfs/) ile birleştirin. Birleşmiş sonucu sıkıştırmak, bireysel dosyaları sıkıştırıp tekrar birleştirmekten daha etkilidir.
İpuçlarıÇok sayfalı belgeleri birleştirin ve ardından sıkıştırın. Birleşmiş sonucu sıkıştırmak, bireysel dosyaları sıkıştırıp tekrar birleştirmekten daha etkilidir.
## Node.js ile PDF Sıkıştırma İçin Sonraki Adımlar Nelerdir?
`compressSize` yöntemi, yerleştirilen görüntü ağırlığını azaltan en yaygın sıkıştırma kullanım durumunu kapsar. Özel senaryolar için IronPDF [PDF sıkıştırma örneği](https://ironpdf.com/nodejs/examples/pdf-compression/) ek çalışan kod örnekleri sunar ve [API referansı](https://ironpdf.com/nodejs/object-reference/api/) tüm mevcut yöntem imzalarını belgeler.
IronPDF ayrıca [görüntüleri PDF'e dönüştürmeyi](https://ironpdf.com/nodejs/examples/image-to-pdf/), [PDF metnini okumayı](https://ironpdf.com/nodejs/examples/reading-pdf-text/) ve [PDF'den sayfa kaldırmayı](https://ironpdf.com/nodejs/examples/remove-page-from-pdf/) destekler -- tümü `PdfDocument` API'siyle entegre edilen işlemler. Node.js PDF yeteneklerinin tam bir özetini görmek için [IronPDF Node.js dokümantasyonuna](https://ironpdf.com/nodejs/docs/) göz atın.
Projenizde sıkıştırmayı test etmeye hazır mısınız? Su işareti olmadan yukarıdaki örnekleri çalıştırmak için [ücretsiz denemenizi başlatın](#trial-license) veya üretim dağıtımı için lisans seçeneklerini görmek için [lisanslama opsiyonlarını görün](#licensing).
`PdfDocument`Sıkça Sorulan Sorular
Node.js ile IronPDF kullanarak bir PDF dosyasını nasıl sıkıştırabilirim?
PdfDocument.fromFile(path) kullanarak bir PDF yükleyin, 1 ile 100 arasında bir kalite değeri ile await pdf.compressSize(quality) çağrısında bulunun, ardından sonucu await pdf.saveAs(outputPath) ile kaydedin. İlk önce paketi npm install @ironsoftware/ironpdf ile kurun.
compressSize içindeki quality parametresi neyi kontrol eder?
Kalite parametresi (1-100 arası tamsayı) gömülü raster görüntüler için JPEG yeniden kodlama seviyesini kontrol eder. 80-89 arası değerler, fark edilir boyut küçültmesi ile yüksek kaliteli çıktı üretir ve çoğu iş dökümanı için önerilen başlangıç noktasıdır. 60'ın altındaki değerler, dosya boyutunun ana kısıtlama olduğu arşivleme veya ön izleme kullanım durumları için uygundur.
compressSize fonksiyonundaki scaleImages parametresi nedir?
İsteğe bağlı ikinci parametre scaleImages (boolean, varsayılan olarak false), gömülü görüntüleri PDF düzenindeki görünen boyutlarına uyacak şekilde düşük çözünürlüklü hale getirir. Bu parametreyi true değerine ayarlamak, yüksek DPI taramalardan veya görüntülerin gösterim boyutlarına bakılmaksızın tam çözünürlükte gömülü olduğu HTML şablonlarından oluşturulan PDF'ler için etkilidir.
compressSize kullanılarak PDF dosya boyutları ne kadar küçültülebilir?
Azaltma, kaynak PDF'nin içeriğine bağlıdır. Birçok yüksek çözünürlüklü raster görüntü içeren belgelerde %50 veya daha fazla azalma görülebilir. Çoğunlukla metin ve vektör grafikleri içeren PDF'ler, compressSize özellikle JPEG görüntü yeniden kodlamasına odaklandığı için minimum azalma görecektir.
Node.js'te sıkıştırma sonucunu nasıl ölçebilirim?
fs.statSync(path).size kullanarak sıkıştırma öncesi ve sonrası dosya boyutunu bayt cinsinden okuyun. Yüzde olarak azalmayı elde etmek için oranı ((before - after) / before) * 100 şeklinde hesaplayın.





