Jak kompresować pliki PDF w C# używając IronPDF
IronPDF zapewnia potężne funkcje kompresji PDF w C#, które zmniejszają rozmiary plików poprzez kompresję osadzonych obrazów i optymalizację struktur drzewa PDF, co sprawia, że dokumenty są bardziej zarządzalne do przechowywania i udostępniania przy zachowaniu jakości.
Kompresja PDF zmniejsza rozmiar plików dokumentów PDF, aby były one bardziej zarządzalne do przechowywania, udostępniania i przesyłania. Niezależnie od tego, czy pracujesz z wygenerowanymi plikami PDF z HTML czy istniejącymi plikami PDF, kompresja jest niezbędna do optymalizacji obsługi dokumentów.
Obrazy zazwyczaj zużywają większość rozmiaru pliku PDF. IronPDF oferuje funkcje kompresji, które zmniejszają rozmiary osadzonych obrazów oraz optymalizują strukturę drzewa często występującą w plikach PDF zawierających wiele tabel. Te techniki działają bezproblemowo z plikami PDF utworzonymi za pomocą różnych metod, w tym konwersji URL do PDF i konwersji plików HTML.
Szybki start: Kompresuj pliki PDF z IronPDF
Zmniejsz rozmiary plików PDF używając narzędzi kompresji IronPDF. Załaduj plik PDF za pomocą PdfDocument.FromFile i wywołaj CompressAndSaveAs, aby skompresować i zapisać zoptymalizowany plik PDF w jednym kroku. Proces ten zapewnia znaczne zmniejszenie rozmiaru pliku przy zachowaniu jakości.
-
Install IronPDF with NuGet Package Manager
PM > Install-Package IronPdf -
Skopiuj i uruchom ten fragment kodu.
PdfDocument.FromFile("input.pdf").CompressAndSaveAs("compressed.pdf", 40); -
Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronPDF w swoim projekcie już dziś z darmową wersją próbną
Minimalny przepływ pracy (3 kroki)
- Pobierz bibliotekę C# do kompresji PDF z NuGet
- Zaimportuj istniejący PDF lub renderuj nowy PDF
- Wywołaj
CompressAndSaveAs(outputPath, quality, removeStructureTree), aby skompresować obrazy, opcjonalnie usunąć drzewo struktury, i zapisać — wszystko w jednym kroku
CompressImages, CompressStructTree i Compress(CompressionOptions), są przestarzałe.Jak skompresować obrazy w plikach PDF?
Jakość kompresji JPEG przyjmuje wartości od 0 (maksymalna kompresja) do 100 (minimalna utrata jakości), a sposób zastosowania tej wartości określa silnik bazowy. Zrozumienie tych poziomów pomaga podczas pracy z plikami PDF zawierającymi osadzone obrazy lub gdy trzeba zarządzać czcionkami i grafiką.
- 90% i więcej: wysoka jakość
- 80%–90%: średnia jakość
- 70–80%: niska jakość
Wypróbuj różne wartości, aby znaleźć równowagę między jakością a rozmiarem pliku. Spadek jakości zależy od typu obrazu wejściowego — na niektórych obrazach utrata ostrości jest bardziej zauważalna niż na innych. Jest to szczególnie ważne podczas pracy z obrazami z usługi Azure Blob Storage lub tworzenia plików PDF z niestandardowymi znakami wodnymi.
: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");
// Compress images in the PDF
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")
' Compress images in the PDF
pdf.CompressAndSaveAs("compressed.pdf", 40)
Jakich rezultatów mogę oczekiwać po kompresji obrazów?
Obniżka o 39,24%!
Jak działa parametr jakości?
Parametr quality w CompressAndSaveAs kontroluje jakość kodowania JPEG stosowaną do każdego osadzonego obrazu. Przekaż liczbę całkowitą od 0 (maksymalna kompresja, najniższa jakość) do 100 (minimalna kompresja, najwyższa jakość) lub null, aby całkowicie pominąć kompresję obrazu.
IronPDF automatycznie przekodowuje i skaluje obrazy podczas kompresji, więc nie są wymagane żadne dodatkowe opcje. Niższe wartości dają mniejsze pliki, ale mogą powodować widoczne artefakty — poeksperymentuj, żeby znaleźć odpowiednią równowagę dla swoich treści.
Jak skompresować strukturę drzewa pliku PDF?
Ta funkcja zmniejsza rozmiar pliku PDF poprzez usunięcie struktury drzewa utworzonej przez silnik Chrome. Aby ją włączyć, należy przekazać removeStructureTree: true jako trzeci parametr CompressAndSaveAs. Najskuteczniej sprawdza się w przypadku plików PDF wygenerowanych przez silnik Chrome, zawierających obszerne dane tabelaryczne. Niektóre silniki renderujące generują pliki PDF bez tej struktury, co sprawia, że funkcja ta jest w takich przypadkach nieskuteczna. Technika ta jest przydatna podczas pracy ze złożonymi układami lub łączenia wielu plików PDF zawierających zbędne elementy strukturalne.
Usunięcie struktury drzewa może wpłynąć na podświetlanie tekstu i skuteczność ekstrakcji. Należy wziąć pod uwagę ten kompromis podczas stosowania kompresji, zwłaszcza jeśli użytkownicy muszą wyodrębniać tekst i obrazy ze skompresowanych plików PDF.
Test CompressAndSaveAs with tree structure removal using this PDF with table data.
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-tree-structure.cs
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("table.pdf");
// Compress tree structure in PDF
pdf.CompressAndSaveAs("compressedTable.pdf", null, true);
Imports IronPdf
Dim pdf As PdfDocument = PdfDocument.FromFile("table.pdf")
' Compress tree structure in PDF
pdf.CompressAndSaveAs("compressedTable.pdf", Nothing, True)
Jakie zmniejszenie rozmiaru pliku można osiągnąć dzięki kompresji struktury drzewa?
Obniżka o 67,90%! Odsetek ten wzrasta w przypadku większych plików PDF zawierających tabele.
Jak mogę zastosować obie metody kompresji jednocześnie?
CompressAndSaveAs obsługuje kompresję zarówno obrazów, jak i struktur drzewa w jednym wywołaniu — przekaż wartość quality i ustaw removeStructureTree na true. To połączone podejście jest szczególnie skuteczne w przypadku złożonych plików PDF zawierających obrazy i dane strukturalne, takich jak raporty z wykresami lub dokumenty z osadzonymi tabelami i grafikami.
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-compress.cs
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
// Configure compression with automatic optimization
pdf.CompressAndSaveAs("compressed.pdf", 80, true);
Imports IronPdf
Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")
' Configure compression with automatic optimization
pdf.CompressAndSaveAs("compressed.pdf", 80, True)
Jakie parametry akceptuje CompressAndSaveAs?
-
outputPath(ciąg znaków): Ścieżka do pliku, w którym zostanie zapisany skompresowany plik PDF. -
quality(int?, 0–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ę obrazów. removeStructureTree(bool, domyślniefalse): Gdytrue, usuwa drzewo struktury PDF w celu dalszego zmniejszenia rozmiaru pliku. Najbardziej skuteczne w przypadku plików PDF wygenerowanych z HTML zawierających tabele.
Przy stosowaniu kompresji należy wziąć pod uwagę konkretny przypadek użycia. W przypadku archiwizacji priorytetem może być jakość, a nie rozmiar pliku. Dystrybucja internetowa może wymagać mniejszych plików. Dostosuj ustawienia w zależności od tego, czy pracujesz z dokumentami zgodnymi ze standardem PDF/A, czy ze standardowymi plikami PDF.
Jak skompresować pliki PDF bez zapisywania ich na dysku?
W wielu rzeczywistych scenariuszach, takich jak odpowiedzi API, funkcje w chmurze lub załączniki do wiadomości e-mail, zapisywanie skompresowanego pliku PDF na dysku jest zbędne lub niepraktyczne.
CompressPdfToBytes zwraca skompresowany plik PDF jako tablicę bajtów, dając pełną kontrolę nad sposobem przechowywania lub przesyłania danych wyjściowych. Zarówno CompressPdfToBytes, jak i CompressPdfToStream akceptują opcjonalny parametr CompressionMode, który kontroluje sposób kompresji.
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-to-bytes.cs
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
// Compress and return as byte array
byte[] compressedBytes = pdf.CompressPdfToBytes();
File.WriteAllBytes("compressed.pdf", compressedBytes);
Imports IronPdf
Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")
' Compress and return as byte array
Dim compressedBytes As Byte() = pdf.CompressPdfToBytes()
File.WriteAllBytes("compressed.pdf", compressedBytes)
Jakie opcje CompressionMode są dostępne?
Różne środowiska wdrożeniowe mają różne ograniczenia dotyczące dostępu do dysku i wydajności. Enum CompressionMode pozwala wybrać odpowiedni kompromis.
-
Automatic(domyślnie): Wybiera optymalną metodę kompresji w oparciu o możliwości systemu. Najpierw próbujeHighQuality, a jeśli dostęp do dysku jest ograniczony, przechodzi doFastMemory. -
FastMemory: Kompresja odbywa się całkowicie w pamięci, bez operacji wejścia/wyjścia na dysk. Najszybsza opcja, ale nie stosuje ponownego próbkowania ani zmniejszania rozdzielczości obrazu, co skutkuje większymi plikami wyjściowymi. HighQuality: Stosuje maksymalną kompresję przy użyciu tymczasowego dostępu do dysku. Tworzy najmniejsze pliki wyjściowe z pełną optymalizacją obrazów. Wymaga uprawnień do zapisu w systemówym katalogu tymczasowym.
Jeśli potrzebujesz Stream zamiast tablicy bajtów, użyj CompressPdfToStream. Jest to przydatne w przypadku bezpośredniego przekazywania do odpowiedzi HTTP, przesyłania do pamięci w chmurze lub dowolnego przepływu pracy opartego na strumieniu.
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-to-stream.cs
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
// Compress and return as Stream
using var compressedStream = pdf.CompressPdfToStream();
File.WriteAllBytes("compressed.pdf", compressedStream.ToArray());
Imports IronPdf
Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")
' Compress and return as Stream
Using compressedStream = pdf.CompressPdfToStream()
File.WriteAllBytes("compressed.pdf", compressedStream.ToArray())
End Using
CompressPdfToBytes i CompressPdfToStream są teraz dostępne na wszystkich platformach IronPDF, w tym Java, Node.js i Python.
Gotowy, aby sprawdzić, co jeszcze możesz zrobić? Zapoznaj się z naszą stroną z samouczkami tutaj: Dodatkowe funkcje
Często Zadawane Pytania
O ile można zmniejszyć rozmiar pliku PDF dzięki kompresji?
IronPDF może zmniejszyć rozmiary plików PDF do 75% poprzez kompresję obrazu i optymalizację struktury. W przedstawionym przykładzie plik został zredukowany o 39,24% za pomocą technik kompresji obrazu.
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, funkcje kompresji IronPDF bezproblemowo działają z plikami PDF utworzonymi za pomocą różnych metod, w tym konwersji ciągów HTML do PDF, konwersji URL do PDF i konwersji plików HTML, jak również z istniejącymi plikami 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.

