IronPDF ile C#'ta PDF'leri Nasıl Sıkıştırırım
IronPDF, C#'ta yerleşik görüntüleri JPEG olarak yeniden kodlayan ve isteğe bağlı olarak dosya boyutunu tek bir çağrıda azaltmak için PDF yapı ağacını silebilen CompressAndSaveAs yöntemiyle PDF'leri sıkıştırır. Eşlik eden CompressPdfToBytes ve CompressPdfToStream yöntemleri, diski hiç ellemek istemediğinizde aynı işi bellekte yapar.
Görüntüler genellikle bir PDF'in boyutunun çoğunu oluşturur ve tablo ağırlıklı belgeler daha fazla ağırlık ekleyen bir yapı ağacı taşır. IronPDF her ikisini de hedefler, bu yüzden aynı çağrı diske yüklenen veya bir hafıza akışında tutulan PDF'lerde çalışır.
Hızlı Başlangıç: IronPDF ile PDF Dosyalarını Sıkıştırın
PDF'nizi PdfDocument.FromFile ile yükleyin ve gömülü görüntüleri yeniden kodlamak ve küçültülmüş kopyayı tek adımda yazmak için CompressAndSaveAs'u çağırın. İkinci argüman JPEG kalitesidir.
-
IronPDF aşağıdaki NuGet Paket Yöneticisi ile yükleyin
-
Bu kod parçacığını kopyalayın ve çalıştırın.
PdfDocument.FromFile("input.pdf").CompressAndSaveAs("compressed.pdf", 40); -
Canlı ortamınızda test için dağıtım yapın
Ücretsiz deneme ile bugün projenizde IronPDF kullanmaya başlayın
Minimal İş Akışı (3 adım)
- NuGet'ten PDF sıkıştırma için C# kütüphanesini indirin
- Mevcut bir PDF'yi içe aktarın veya yeni bir PDF oluşturun
- Görüntüleri sıkıştırmak, isteğe bağlı olarak yapı ağacını sıyırmak ve sonucu kaydetmek için
CompressAndSaveAs(outputPath, quality, removeStructureTree)çağırın.
CompressImages, CompressStructTree ve Compress(CompressionOptions) gibi sıkıştırma için önceki yöntemler kullanımdan kaldırıldı.PDF'lerde Görselleri Nasıl Sıkıştırırım?
Her yerleşik görüntüyü belirtilen kalitede yeniden kodlamak için quality JPEG değerini CompressAndSaveAs yöntemine ikinci argüman olarak verin. Değerler 0'dan (maksimum sıkıştırma) 100'e (minimum kayıp) kadar değişir ve her değerin çıktıya nasıl eşlendiğine dair karar altında yatan motor verir. Bu, bir belge gömülü görüntüler içerdiğinde başvurulacak yöntemdir.
Kabaca bir kılavuz:
- 90 ve üzeri: yüksek kalite
- 80 ila 90: orta kalite
- 70 ila 80: düşük kalite
Daha düşük bir numara daha fazla sıkıştırır ama görünür artefaktlar ekleyebilir ve ne kadar netliğin düştüğü kaynak görüntüye bağlıdır, bu nedenle kendi içeriğiniz için birkaç ayarı test ederek istediğiniz dengeyi bulun.
Giriş
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-image.cs
using IronPdf;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");
// Quality 40 re-encodes every embedded image as a low-quality JPEG, which is
// where most of the file-size saving comes from in image-heavy PDFs
pdf.CompressAndSaveAs("compressed.pdf", 40);
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page")
' Quality 40 re-encodes every embedded image as a low-quality JPEG, which is
' where most of the file-size saving comes from in image-heavy PDFs
pdf.CompressAndSaveAs("compressed.pdf", 40)
Çıktı
Görüntü Sıkıştırmasından Hangi Sonuçları Bekleyebilirim?
Vikipedi renderında %39,24 oranında azaldı.
PDF Ağaç Yapısını Nasıl Sıkıştırırım?
Chrome Motoru'nun PDF'ye yazdığı yapı ağacını silmek için CompressAndSaveAs'e üçüncü argüman olarak removeStructureTree: true geçirin. Tasarruf, geniş kapsamlı tablo verisi tutan Chrome Motoru PDF'lerinde en büyüktür. Bazı işleme motorları böyle bir yapı yaymazlar, bu da özellik için kaldırılacak hiçbir şey bırakmaz.
Ağacı kaldırmak, metin vurgulama ve seçim zayıflatabilir, bu yüzden okuyucuların daha sonra metin ve görüntüler çıkarması gerekirse, bu büyüklük kazancı ile karşılaştırın.
Bu tablo verileri içeren PDF ile yapı ağacı kaldırma işlemini CompressAndSaveAs ile test edin.
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-tree-structure.cs
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("table.pdf");
// Pass null quality to skip image compression and true to drop the structure
// tree, which is the bulk of the size in table-heavy Chrome-rendered PDFs
pdf.CompressAndSaveAs("compressedTable.pdf", null, true);
Imports IronPdf
Dim pdf As PdfDocument = PdfDocument.FromFile("table.pdf")
' Pass Nothing quality to skip image compression and True to drop the structure
' tree, which is the bulk of the size in table-heavy Chrome-rendered PDFs
pdf.CompressAndSaveAs("compressedTable.pdf", Nothing, True)
Ağaç Yapısı Sıkıştırması Ne Kadar Dosya Boyutu Azaltabilir?
%67,90 oranında azaldı. Rakam, tablo PDF'si büyüdükçe yükselir.
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.
Her İki Sıkıştırma Yöntemini Birlikte Nasıl Uygularım?
Şişkinliğin her iki kaynağını aynı anda azaltmak için bir quality değeri sağlayın ve removeStructureTree'i true olarak ayarlayın. Bu eşleştirme, grafikler veya gömülü tablolar içeren raporlar gibi yapılandırılmış verilerle görüntüleri karıştıran belgelerde değerini kanıtlar.
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-compress.cs
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
// Shrink both sources of bloat in one pass: re-encode images at quality 80
// and strip the structure tree (true) for the largest size reduction
pdf.CompressAndSaveAs("compressed.pdf", 80, true);
Imports IronPdf
Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")
' Shrink both sources of bloat in one pass: re-encode images at quality 80
' and strip the structure tree (True) for the largest size reduction
pdf.CompressAndSaveAs("compressed.pdf", 80, True)
CompressAndSaveAs Hangi Parametreleri Kabul Eder?
-
outputPath(string): sıkıştırılmış PDF'nin yazıldığı dosya yolu. -
quality(int?, 0'dan 100'e): her gömülü görüntüye uygulanan JPEG kalitesi. Daha düşük değerler daha küçük dosyalar üretir. Görüntü sıkıştırmayı tamamen atlamak içinnulldeğerini geçin. removeStructureTree(bool, varsayılanfalse):trueolduğunda, dosya boyutunu daha da azaltmak için PDF yapı ağacını siler. Tablolarla HTML tarafından üretilen PDF'ler için en etkili olanıdır.
Durumu belirletin. Arşiv kopyaları genellikle kaliteyi boyut üzerine tercih ederken, web dağıtımı daha küçük dosya ödüllendirir. Aynı takas, görüntü sadakatinin öncelikli olabileceği PDF/A uyumlu belgeleri sıkıştırdığınızda da geçerlidir.
Diskte Kaydetmeden PDF'leri Nasıl Sıkıştırırım?
API yanıtları, bulut işlevleri ve e-posta ekleri nadiren diskte sıkıştırılmış bir PDF'ye ihtiyaç duyar. CompressPdfToBytes sonucu bir byte dizisi olarak döndürür, böylece byte'ların nereye gideceğine siz karar verirsiniz.
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-to-bytes.cs
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
// Return the compressed PDF as bytes so it can go straight into an HTTP
// response, a database varbinary column, or a queue message with no temp file
byte[] compressedBytes = pdf.CompressPdfToBytes();
File.WriteAllBytes("compressed.pdf", compressedBytes);
Imports IronPdf
Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")
' Return the compressed PDF as bytes so it can go straight into an HTTP
' response, a database varbinary column, or a queue message with no temp file
Dim compressedBytes As Byte() = pdf.CompressPdfToBytes()
File.WriteAllBytes("compressed.pdf", compressedBytes)
Bir byte dizisi yerine Stream gerekiyorsa, CompressPdfToStream çağrısı yapın ve hedefinize kopyalayın. Bu, bir HTTP yanıt gövdesine, bir bulut depolama yüklemesine veya herhangi bir akış tabanlı iş akışına çıktı borulamak için uygundur.
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-to-stream.cs
using IronPdf;
using System.IO;
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
// Stream output so the compressed bytes can be piped straight to an HTTP
// response or cloud upload without first buffering the whole file as byte[]
using Stream compressedStream = pdf.CompressPdfToStream();
// CompressPdfToStream returns a read-only Stream, so copy it to the destination
using FileStream fileStream = File.Create("compressed.pdf");
compressedStream.CopyTo(fileStream);
Imports IronPdf
Imports System.IO
Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")
' Stream output so the compressed bytes can be piped straight to an HTTP
' response or cloud upload without first buffering the whole file as byte()
Using compressedStream As Stream = pdf.CompressPdfToStream()
' CompressPdfToStream returns a read-only Stream, so copy it to the destination
Using fileStream As FileStream = File.Create("compressed.pdf")
compressedStream.CopyTo(fileStream)
End Using
End Using
Hangi CompressionMode Seçenekleri Mevcuttur?
Hem CompressPdfToBytes hem de CompressPdfToStream, işin nasıl yapılacağını belirleyen isteğe bağlı bir CompressionMode argümanı alır. Dağıtım hedefleri, disk erişimine izin verip vermediğine göre farklılık gösterir ve mod, doğru takası yapmanıza izin verir:
| Mod | Disk erişimi | Görüntü yeniden örnekleme | Çıktı boyutu |
|---|---|---|---|
Automatic (varsayılan) |
Diski dener, belleğe geri düşer | Disk mevcut olduğunda | İzin verilen yerde en küçük |
FastMemory |
Yok | Hayır | Daha büyük |
HighQuality |
Geçici dizin gereklidir | Evet | En küçük |
Automatic önce HighQuality'i dener ve geçici dizin erişilemez olduğunda FastMemory'e düşer. Aşağıdaki örnek, en küçük çıktı için sistem geçici dizinine yazma iznini çalıştırma anında gerektiren HighQuality'i zorlar.
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-mode.cs
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
// HighQuality resamples images using the system temp directory, so it produces
// the smallest output but needs write access to that directory at runtime
byte[] compressedBytes = pdf.CompressPdfToBytes(50, false, CompressionMode.HighQuality);
File.WriteAllBytes("compressed.pdf", compressedBytes);
Imports IronPdf
Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")
' HighQuality resamples images using the system temp directory, so it produces
' the smallest output but needs write access to that directory at runtime
Dim compressedBytes As Byte() = pdf.CompressPdfToBytes(50, False, CompressionMode.HighQuality)
File.WriteAllBytes("compressed.pdf", compressedBytes)
Çıktı
CompressPdfToBytes ve CompressPdfToStream, Java, Node.js ve Python dahil olmak üzere tüm IronPDF platformlarında artık kullanılabilir.Sonuç
Artık görüntüleri yeniden kodlayan ve yapı ağacını silen CompressAndSaveAs isimli bir yöntemimiz var ve seçilen CompressionMode altında bellekte aynı işi yapmak için CompressPdfToBytes ve CompressPdfToStream bulunmaktadır. Doğal olarak bir sonraki adım, bu ince sayfaları PDF rasterizasyonu ile küçük resimlere dönüştürmektir.
Sıkça Sorulan Sorular
Sıkıştırmayla PDF dosya boyutu ne kadar azaltılabilir?
Sonuçlar içeriğe göre değişir. Gösterilen örneklerde, görüntü sıkıştırma bir dosyayı %39,24 oranında azalttı ve yapı ağacı kaldırma tablodan zengin bir PDF'yi %67,90 oranında azalttı. Görüntü-ağır ve tablo-ağır belgeler en büyük tasarrufu sağlar.
IronPDF C#'ta PDF'leri nasıl sıkıştırır?
IronPDF, tek bir yöntem aracılığıyla sıkıştırmayı yönetir — CompressAndSaveAs. Gömülü görüntü boyutlarını 0–100 aralığında yapılandırılabilir bir JPEG kalite kullanarak azaltır ve removeStructureTree: true ayarlanarak PDF'nin iç yapısını isteğe bağlı olarak kaldırabilir. Bu özellik, özellikle tablo ağırlıklı belgelerde etkilidir.
PDF'lerde JPEG sıkıştırması için hangi kalite seviyelerini kullanmalıyım?
IronPDF, %1 ile %100 arasında JPEG sıkıştırma kalitesini destekler. Önerilen seviyeler: yüksek kalite için %90 ve üzeri, orta kalite için %80-%90 arası ve düşük kalite için %70-%80 arası. Optimal ayar, dosya boyutu ve görsel kalite gereksinimleriniz arasındaki dengeye bağlıdır.
Bir PDF'i sadece bir satır kodla sıkıştırabilir miyim?
Evet, IronPDF bir satır kodla PDF sıkıştırmasına izin verir: PdfDocument.FromFile("input.pdf").CompressAndSaveAs("compressed.pdf", 40); Bu, bir PDF'i yükler, görüntüleri %40'lık bir kaliteyle sıkıştırır ve sonucu kaydeder.
Sıkıştırma, HTML'den oluşturulan PDF'lerle çalışıyor mu?
Evet, IronPDF'nin sıkıştırması, HTML metin dizesinden PDF'ye dönüşümler, URL'den PDF'ye dönüşümler ve HTML dosya dönüşümleri dahil olmak üzere çeşitli yöntemlerle oluşturulan PDF'lerle çalışır ve mevcut PDF dosyaları ile de uyumludur.
Hangi içerik türleri PDF sıkıştırmadan en çok fayda sağlar?
Genellikle PDF dosya boyutlarını tüketen görüntüler, görüntü ağırlıklı belgeleri sıkıştırma için ideal adaylar yapar. Ayrıca, karmaşık tablo yapıları olan PDF'ler IronPDF'in yapı ağacı sıkıştırma özelliğinden faydalanır.
Bir PDF'i diske kaydetmeden sıkıştırabilir miyim?
Evet, IronPDF CompressPdfToBytes ve CompressPdfToStream yöntemlerini sağlar, bunlar sırasıyla sıkıştırılmış PDF'yi bir bayt dizisi veya Stream olarak döndürür. Her ikisi de Otomatik, HızlıBellek veya YüksekKalite sıkıştırma seçenekleri olan opsiyonel SıkıştırmaModu parametresini kabul eder.
PDF sıkıştırma C# dışındaki dillerde mevcut mu?
Evet, CompressPdfToBytes ve CompressPdfToStream artık tüm IronPDF platformlarında mevcuttur, Java, Node.js ve Python dahil.
C#'da PDF sıkıştırmasını ince ayarlarla nasıl kontrol ederim?
AdvancedCompressionOptions nesnesini CompressAndSaveAs yöntemine geçirerek, TargetImageDpi üzerinden görüntü DPI yeniden örnekleme, JpegQuality ile JPEG yeniden kodlama kalitesi ve zlib CompressionLevel dahil olmak üzere boru hattını ayarlamak için kullanın. Orijinal CompressAndSaveAs(outputPath, quality, removeStructureTree) aşırı yüklemesi hâlâ çalışıyor ve önceden olduğu gibi aynı çıktıyı üretiyor.

