C# ile PDF'ler Nasıl Sıkıştırılır

IronPDF ile C#'ta PDF'leri Nasıl Sıkıştırırım

This article was translated from English: Does it need improvement?
Translated
View the article in English

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.

  1. IronPDF aşağıdaki NuGet Paket Yöneticisi ile yükleyin

    PM > Install-Package IronPdf
  2. Bu kod parçacığını kopyalayın ve çalıştırın.

    PdfDocument.FromFile("input.pdf").CompressAndSaveAs("compressed.pdf", 40);
  3. Canlı ortamınızda test için dağıtım yapın

    Ücretsiz deneme ile bugün projenizde IronPDF kullanmaya başlayın

    arrow pointer


Lütfen dikkate alınCompressImages, 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)
$vbLabelText   $csharpLabel

Çıktı

Görüntü Sıkıştırmasından Hangi Sonuçları Bekleyebilirim?

Vikipedi renderında %39,24 oranında azaldı.

compressed.pdf (449 KB) ve nonCompress.pdf (739 KB) arasında sıkıştırma sonuçlarını gösteren dosya karşılaştırması

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)
$vbLabelText   $csharpLabel

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.

compressedTable.pdf (52 KB) ve table.pdf (162 KB) arasında sıkıştırma sonuçlarını gösteren dosya karşılaştırması
Icon Quote related to Ağaç Yapısı Sıkıştırması Ne Kadar Dosya Boyutu Azaltabilir?

Bu türden favori kütüphanem IronPDF'dir. PDF dosyalarının hızlı ve verimli bir şekilde işlenmesine olanak tanır. Ayrıca, PDF/A formatına dışa aktarma ve dijital imzalama gibi birçok değerli özelliğe sahiptir.

Milan Jovanovic related to Ağaç Yapısı Sıkıştırması Ne Kadar Dosya Boyutu Azaltabilir?

Milan Jovanovic

Microsoft MVP

Vaka çalışmasını görüntüle
Icon Quote related to Ağaç Yapısı Sıkıştırması Ne Kadar Dosya Boyutu Azaltabilir?

IronOCR, manuel işleme maliyetinden yıllık 40.000 USD tasarruf etmemizi sağlıyor, üretkenliği artırıyor ve yüksek etkili görevler için kaynakları serbest bırakıyor. Kesinlikle tavsiye ederim.

Brent Matzelle related to Ağaç Yapısı Sıkıştırması Ne Kadar Dosya Boyutu Azaltabilir?

Brent Matzelle

Teknoloji Müdürü, OPYN

Vaka çalışmasını görüntüle
Icon Quote related to Ağaç Yapısı Sıkıştırması Ne Kadar Dosya Boyutu Azaltabilir?

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.

David Jones related to Ağaç Yapısı Sıkıştırması Ne Kadar Dosya Boyutu Azaltabilir?

David Jones

Baş Yazılım Mühendisi, Agorus Build

Vaka çalışmasını görüntüle

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)
$vbLabelText   $csharpLabel

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çin null değerini geçin.

  • removeStructureTree (bool, varsayılan false): true olduğ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)
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

Çıktı

Lütfen dikkate alınCompressPdfToBytes 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.

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
Gözden Geçiren
Jeff Fritz
Jeffrey T. Fritz
Baş Program Yöneticisi - .NET Topluluğu Ekibi
Jeff, .NET ve Visual Studio ekipleri için bir Baş Program Yöneticisidir. .NET Conf sanal konferans serisinin baş yapımcısıdır ve haftada iki kez canlı yayınlanan 'Fritz and Friends' adlı bir akış programı sunar; burada izleyicilerle birlikte teknoloji konuşur ve kod yazar. Jeff, en büyük Microsoft geliştirici etkinlikleri için atölyeler, sunumlar ve içerik planları yazar, Microsoft Build, Microsoft Ignite, .NET Conf ve Microsoft MVP Summit gibi etkinliklerde yer alır.
Başlamaya Hazır mısınız?
Nuget İndirmeler 19,936,792 | Sürüm: 2026.7 yeni yayınlandı
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

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