IRONSOFTWAREHOME

Jak kompresować pliki PDF w C# używając IronPDF

Curtis Chau
Curtis Chau
Updated: 29 czerwca 2026

IronPDF kompresuje PDF w C# za pomocą metody CompressAndSaveAs, która przekodowuje osadzone obrazy jako JPEG i opcjonalnie usuwa strukturę drzewa PDF, aby zmniejszyć rozmiar pliku w jednym wywołaniu. Metody towarzyszące CompressPdfToBytes i CompressPdfToStream wykonują to samo zadanie w pamięci, gdy nigdy nie chcesz dotykać dysku.

Obrazy zwykle stanowią większość rozmiaru pliku PDF, a dokumenty z dużą ilością tabel mają drzewo struktury, które dodatkowo zwiększa wagę. IronPDF celuje w oba, więc to samo wywołanie działa na plikach PDF załadowanych z dysku lub przechowywanych w strumieniu pamięci.

Szybki start: Kompresuj pliki PDF z IronPDF

Załaduj swój PDF za pomocą PdfDocument.FromFile i wywołaj CompressAndSaveAs, aby przekodować jego obrazy i zapisać zredukowaną kopię w jednym kroku. Drugi argument to jakość JPEG.

  1. 1Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

  2. 2Skopiuj i uruchom ten fragment kodu.

    PdfDocument.FromFile("input.pdf").CompressAndSaveAs("compressed.pdf", 40);
    C#
  3. 3Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronPDF w swoim projekcie już dziś z darmową wersją próbną
    arrow pointer

Zwróć uwagę: Poprzednie metody kompresji, takie jak CompressImages, CompressStructTree i Compress(CompressionOptions), są przestarzałe.

Jak skompresować obrazy w plikach PDF?

Przekaż wartość JPEG quality jako drugi argument do CompressAndSaveAs, a IronPDF przekoduje każdy osadzony obraz w tej jakości. Wartości wahają się od 0 (maksymalna kompresja) do 100 (minimalna strata), a podstawowa jednostka decyduje, jak każda wartość przypisuje się do wynikowego obrazu. Ta metoda najlepiej nadaje się do dokumentów z osadzonymi obrazami.

Jako ogólny przewodnik:

  • 90 i wyżej: wysoka jakość
  • 80 do 90: średnia jakość
  • 70 do 80: niska jakość

Niższa liczba bardziej kompresuje, ale może wprowadzić widoczne artefakty, a spadek przejrzystości zależy od obrazu źródłowego, więc przetestuj kilka ustawień na własnym materiale, aby znaleźć równowagę, którą chcesz.

Dane wejściowe

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);
C#

Wynik

Jakich rezultatów mogę oczekiwać po kompresji obrazów?

Zmniejszono o 39,24% w przypadku renderowania Wikipedii.

Porównanie plików pokazujące plik compressed.PDF (449 KB) w porównaniu z plikiem nonCompress.PDF (739 KB), ilustrujące wyniki kompresji obrazów

Jak skompresować strukturę drzewa pliku PDF?

Przekaż removeStructureTree: true jako trzeci argument do CompressAndSaveAs, aby usunąć strukturę drzewa, którą silnik Chrome zapisuje w pliku PDF. Oszczędności są największe na plikach PDF z silnika Chrome, które zawierają rozległe dane tabelaryczne. Niektóre silniki renderujące nie emitują takiej struktury, co powoduje, że funkcja nie ma czego usunąć.

Usunięcie drzewa może osłabić podświetlanie tekstu i wybór, więc rozważ to przeciw oszczędności miejsca, jeśli czytniki będą później musiały wyodrębniać tekst i obrazy z wyniku.

Przetestuj CompressAndSaveAs z usunięciem struktury drzewa, używając tego PDF z danymi tabeli.

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);
C#

Jakie zmniejszenie rozmiaru pliku można osiągnąć dzięki kompresji struktury drzewa?

Zmniejszono o 67,90%. Wskaźnik rośnie wraz ze wzrostem pliku tabeli PDF.

Porównanie plików: compressedTable.PDF (52 KB) i table.PDF (162 KB) pokazujące wyniki kompresji

Moją ulubioną biblioteką tego typu jest IronPDF. Umożliwia ona szybkie i efektywne manipulowanie plikami PDF. Posiada także wiele cennych funkcji, takich jak eksport do formatu PDF/A i cyfrowe podpisywanie dokumentów PDF.

Milan Jovanovic

Microsoft MVP

Zobacz studium przypadku

IronOCR pozwala nam oszczędzić 40 000 USD rocznie na ręcznym przetwarzaniu, jednocześnie zwiększając produktywność i uwalniając zasoby do zadań o wysokim wpływie. Gorąco polecam.

Brent Matzelle

Dyrektor technologiczny, OPYN

Zobacz studium przypadku

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.

David Jones

Główny inżynier oprogramowania, Agorus Build

Zobacz studium przypadku

Jak mogę zastosować obie metody kompresji jednocześnie?

Podaj wartość quality i ustaw removeStructureTree na true w tej samej funkcji CompressAndSaveAs, aby jednocześnie zmniejszyć oba źródła nadmiarowych danych. To powiązanie sprawdza się w dokumentach, które łączą obrazy ze strukturalnymi danymi, takich jak raporty z wykresami czy faktury z osadzonymi tabelami.

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);
C#

Jakie parametry akceptuje CompressAndSaveAs?

  • outputPath (string): Ścieżka do pliku, gdzie zapisany jest skompresowany PDF.

  • quality (int?, od 0 do 100): Jakość JPEG stosowana do każdego osadzonego obrazu. Niższe wartości powodują tworzenie mniejszych plików. Przekaż null, aby całkowicie pominąć kompresję obrazu.

  • removeStructureTree (bool, domyślnie false): Gdy true, usuwa strukturę drzewa PDF, aby dodatkowo zmniejszyć rozmiar pliku. Najbardziej efektywne dla plików PDF generowanych z HTML z tabelami.

Niech przypadek użycia ustawi knoba. Kopie archiwalne często preferują jakość nad rozmiarem, podczas gdy dystrybucja w sieci nagradza mniejszy plik. To samo przemienne odniesienie odnosi się, gdy kompresujesz dokumenty zgodne z PDF/A, gdzie wierność obrazów może być priorytetem.

Jak mogę uzyskać szczegółowe sterowanie kompresją?

Dla większości dokumentów wystarczające jest wywołanie dwoma argumentami, ale archiwa z dużą ilością obrazów i ścisłe budżety wielkości czasami wymagają większej kontroli. Przekaż obiekt AdvancedCompressionOptions do CompressAndSaveAs, aby dostosować potok kompresji, w tym skalowanie w dół DPI obrazów, jakość ponownego kodowania JPEG i poziom kompresji zlib. Prostsze przeciążenie CompressAndSaveAs(outputPath, quality, removeStructureTree) nadal działa bez zmian i generuje takie samo wyjście jak wcześniej.

using IronPdf;

var pdf = PdfDocument.FromFile("input.pdf");

// Web or email: strong size reduction
pdf.CompressAndSaveAs("compressed.pdf", new AdvancedCompressionOptions
{
    JpegQuality = 70,
    TargetImageDpi = 150,
    RemoveStructureTree = true
});

// Print quality: minimal quality loss
pdf.CompressAndSaveAs("print.pdf", new AdvancedCompressionOptions
{
    JpegQuality = 90,
    TargetImageDpi = 300
});
C#

Dwie właściwości, które mają największy wpływ, to JpegQuality i TargetImageDpi:

  • JpegQuality (int?, od 1 do 100, domyślnie null): Przekodowuje obrazy w tej jakości JPEG. Pozostaw je null, aby całkowicie pominąć ponowne kodowanie obrazu.
  • TargetImageDpi (int?, domyślnie 150): Skalowanie w dół obrazów, których efektywne DPI przekracza tę wartość przed ponownym kodowaniem. Ustaw je na null lub 0, aby wyłączyć zmniejszanie rozdzielczości i zachować oryginalną.

Zalecane wartości JpegQuality (dotyczy tylko gdy ustawione):

WartośćUżyj przypadku
null (domyślnie)Brak ponownego kodowania obrazu
95Archiwum, minimalne artefakty
85Wysoka jakość
70Wyważony, dobry dla ogólnego użytku
50Internet lub e-mail, mniejsze pliki z widocznymi artefaktami

Zalecane wartości TargetImageDpi (stratne):

WartośćUżyj przypadku
300Jakość druku, bez strat dla oka przy normalnej odległości oglądania
200Ostrość na ekranach o wysokim DPI i retina
150 (domyślnie)Najlepszy balans między wielkością a jakością dla ekranu i e-maila
96Agresywne, miękki tekst ale nadal czytelny
null lub 0Wyłączone, zachowuje oryginalną rozdzielczość
Zwróć uwagę: TargetImageDpi zmniejszanie rozdzielczości jest stratne: gdy obraz jest zmniejszany, jego oryginalna rozdzielczość nie może zostać przywrócona. Zdecyduj wcześniej, czy chcesz redukcję rozdzielczości, czy tylko ponowne kodowanie w celu poprawy jakości, i ustaw TargetImageDpi odpowiednio.

Jak skompresować pliki PDF bez zapisywania ich na dysku?

Odpowiedzi API, funkcje w chmurze i załączniki e-mail rzadko potrzebują skompresowanego PDF na dysku. CompressPdfToBytes zwraca wynik jako tablica bajtów, więc Ty decydujesz, gdzie bajty trafią dalej.

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);
C#

Jeśli potrzebujesz Stream zamiast tablicy bajtów, wywołaj CompressPdfToStream i skopiuj to do swojej destynacji. To pasuje do przesyłania danych do korpusu odpowiedzi HTTP, przesyłania do chmury lub wszelkich przepływów pracy opartych na strumieniach.

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);
C#

Jakie opcje CompressionTryb są dostępne?

Zarówno CompressPdfToBytes, jak i CompressPdfToStream przyjmują opcjonalny argument CompressionTryb, który decyduje, jak zadanie będzie wykonywane. Docelowe platformy wdrożenia różnią się, czy pozwalają na dostęp do dysku, a tryb pozwala wybrać odpowiedni kompromis:

TrybDostęp do dyskuPrzepróbki obrazuRozmiar wyjściowy
Automatic (domyślnie)Próbuje na dysku, wraca do pamięciGdy dysk jest dostępnyNajmniejszy, gdzie dozwolone
FastMemoryNieneNieWiększy
HighQualityWymagany katalog tymczasowyTakNajmniejszy

Automatic próbuje najpierw HighQuality, a następnie spada do FastMemory, gdy katalog tymczasowy jest niedostępny. Przykład poniżej wymusza HighQuality dla najmniejszego wyjścia, które wymaga dostępu zapisu do systemowego katalogu temp w czasie działania.

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);
C#

Wynik

CompressPdfToBytes i CompressPdfToStream są teraz dostępne na wszystkich platformach IronPDF, w tym Java, Niede.js i Python.

Wnioski

Masz teraz jedną metodę, CompressAndSaveAs, która ponownie koduje obrazy i zdziera strukturę drzewa, plus CompressPdfToBytes i CompressPdfToStream dla tej samej pracy w pamięci pod wybranym CompressionTryb. Naturalnym następnym krokiem jest przekształcenie odchudzonych stron na miniatury za pomocą rasteryzacji PDF.

Często Zadawane Pytania

O ile można zmniejszyć rozmiar pliku PDF dzięki kompresji?

Wyniki różnią się w zależności od zawartości. W przedstawionych przykładach, kompresja obrazu zmniejszyła plik o 39,24%, a usunięcie drzewa struktury zmniejszyło tabelo- intensywny PDF o 67,90%. Dokumenty o dużej ilości obrazów i tabel widzą największe oszczędności.

Jak IronPDF kompresuje pliki PDF w C#?

IronPDF obsługuje kompresję poprzez jedną metodę - CompressAndSaveAs. Zmniejsza rozmiary osadzonych obrazów, używając konfigurowalnej jakości JPEG (0–100) i opcjonalnie może usunąć wewnętrzną strukturę drzewa PDF, ustawiając removeStructureTree: true, co jest szczególnie skuteczne dla dokumentów z dużymi tabelami.

Jakie poziomy jakości powinienem używać do kompresji JPEG w PDF?

IronPDF obsługuje jakość kompresji JPEG od 1% do 100%. Zalecane poziomy to: 90% i więcej dla wysokiej jakości, 80%-90% dla średniej jakości i 70%-80% dla niskiej jakości. Optymalne ustawienie zależy od równowagi między rozmiarem pliku a wymaganiami jakości wizualnej.

Czy mogę skompresować PDF w zaledwie jednej linii kodu?

Tak, IronPDF pozwala na kompresję PDF w jednej linii kodu: PdfDocument.FromFile("input.pdf").CompressAndSaveAs("compressed.pdf", 40); To ładuje PDF, kompresuje obrazy przy 40% jakości i zapisuje wynik.

Czy kompresja działa z plikami PDF utworzonymi z HTML?

Tak, kompresja IronPDF działa z PDF-ami stworzonymi na różne sposoby, w tym konwersje HTML string do PDF, konwersje URL do PDF i konwersje pliku HTML, jak również istniejące pliki PDF.

Jakie typy zawartości najbardziej korzystają z kompresji PDF?

Obrazy zazwyczaj zajmują większość rozmiarów plików PDF, co czyni dokumenty bogate w obrazy idealnymi kandydatami do kompresji. Ponadto, PDF złożone z dużych struktur tabelarycznych korzystają z funkcji kompresji struktury drzewa w IronPDF.

Czy mogę skompresować PDF bez zapisywania go na dysku?

Tak, IronPDF oferuje metody CompressPdfToBytes i CompressPdfToStream, które zwracają skompresowany PDF jako tablicę bajtów lub Strumień odpowiednio. Obie akceptują opcjonalny parametr CompressionMode z opcjami dla automatycznej, szybkiej pamięci lub wysokiej jakości kompresji.

Czy kompresja PDF jest dostępna w innych językach niż C#?

Tak, CompressPdfToBytes i CompressPdfToStream są teraz dostępne na wszystkich platformach IronPDF, w tym Java, Node.js i Python.

Jak uzyskać szczegółową kontrolę nad kompresją PDF w C#?

Przekaż obiekt AdvancedCompressionOptions do CompressAndSaveAs, aby dostosować potok, w tym też zmniejszenie rozdzielczości obrazów DPI za pomocą TargetImageDpi, jakość ponownego kodowania JPEG przez JpegQuality, oraz poziom kompresji zlib poprzez CompressionLevel. Oryginalne przeciążenie CompressAndSaveAs(outputPath, quality, removeStructureTree) nadal działa i produkuje ten sam wynik, co przedtem.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.

...
Czytaj więcej

Gotowy, aby rozpocząć?

Nuget Downloads 20,667,543Wersja:2026.7właśnie wydany

Odbierz swój BEZPŁATNY

30-dniowy klucz próbny natychmiast.

bullet_checkedNie wymaga karty kredytowej ani tworzenia konta
test_punktorówTestuj w produkcji
bez znaków wodnych
kalendarz_punktorów30 dni w pełni
funkcjonalny produkt
wsparcie_punktorów24/5 wsparcie techniczne
w trakcie okresu próbnego
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta
Biblioteka C# NuGet dla plików PDF
Zainstaluj za pomocą NuGet

Wersja: 2026.7

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. W Eksploratorze Rozwiązań, kliknij prawym przyciskiem Myszy na Odwołania, Zarządzaj pakietami NuGet
  2. Wybierz opcję Przeglądaj i wyszukaj „IronPdf”
  3. Wybierz pakiet i zainstaluj
DLL PDF dla C#
Pobierz DLL

Wersja: 2026.7

Pobierz teraz

lub pobierz instalator Windows tutaj.

  1. Pobierz i rozpakuj IronPDF do lokalizacji takiej jak ~/Libs w katalogu Solution
  2. W Eksploratorze rozwiązań programu Visual Studio kliknij prawym przyciskiem myszy opcję Odwołania. Wybierz opcję Przeglądaj, „IronPdf.dll”

Licencje od 749 USD

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta