Jak kompresować pliki PDF za pomocą języka Python | IronPDF

Jak kompresować pliki PDF w języku Python

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

Metoda CompressImages firmy IronPDF pozwala programistom Pythona zmniejszyć rozmiar plików PDF poprzez kompresję osadzonych obrazów z regulowanymi ustawieniami jakości, co pomaga zoptymalizować przestrzeń dyskową i przyspieszyć udostępnianie dokumentów bez utraty czytelności.

Szybki start: Kompresja plików PDF w języku Python

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-compress-pdf/quickstart.py
from ironpdf import PdfDocument

# 1. Install IronPDF: pip install ironpdf
# 2. Load your PDF
pdf = PdfDocument("your-file.pdf")
# 3. Compress images (quality: 1-100)
pdf.CompressImages(60)
# 4. Save compressed PDF
pdf.SaveAs("compressed.pdf")
# 5. Adjust quality parameter to balance size vs quality
// TEN FRAGMENT KODU JEST NIEDOSTĘPNY!
from ironpdf import PdfDocument

# 1. Install IronPDF: pip install ironpdf
# 2. Load your PDF
pdf = PdfDocument("your-file.pdf")
# 3. Compress images (quality: 1-100)
pdf.CompressImages(60)
# 4. Save compressed PDF
pdf.SaveAs("compressed.pdf")
# 5. Adjust quality parameter to balance size vs quality
PYTHON

Pliki PDF są powszechnie używane do przechowywania i udostępniania dokumentów, ale mogą stać się upierdliwe przy dużych rozmiarach plików. Wgrywanie lub wysyłanie e-mailem raportu o rozmiarze 10 MB jest zauważalnie wolniejsze niż udostępnianie odpowiednika 2 MB, a koszty przechowywania rosną, gdy wolumeny dokumentów są wysokie. Kompresja PDF rozwiązuje to problem poprzez zmniejszenie rozmiaru pliku, przy jednoczesnym zachowaniu czytelności treści.

Ten przewodnik pokazuje, jak używać IronPDF do kompresji plików PDF w Pythonie. Przykładowe segmenty kodu obejmują zarówno standardową kompresję obrazów, jak i zaawansowaną kompresję opartą na rozdzielczości, więc możesz wybrać podejście, które pasuje do twojej ścieżki. Niezależnie od tego, czy pracujesz z konwersjami HTML do PDF czy istniejącymi dokumentami, to samo API kompresji ma zastosowanie.

Czym jest IronPDF i dłączego warto go używać do kompresji plików PDF?

IronPDF jest biblioteką PDF dla Pythona, która obsługuje tworzenie, czytanie, edytowanie i optymalizację dokumentów PDF. Działa z plikami tworzonymi od zera, konwertowanymi z HTML lub ładowanymi z dysku. Jej API kompresji jest skierowane do obrazów, które są głównym czynnikiem przyczyniającym się do dużych rozmiarów PDF.

Metoda CompressImages przyjmuje liczbę całkowitą w zakresie od 1 do 100 oraz opcjonalną wartość logiczną, która zmniejsza obrazy do ich widocznej rozdzielczości. Ten projekt z dwoma parametrami pozwala precyzyjnie dostroić kompresję: tablica kontrolna o dużym obciążeniu ruchem mogłaby używać jakości 70, aby zachować ostre wizualizacje, podczas gdy system archiwizacji wewnętrznej mógłby używać jakości 40, aby maksymalizować oszczędności w przechowywaniu. Biblioteka obsługuje wszystkie wewnętrzne kody, więc nie są wymagane dodatkowe zależności.

IronPDF jest częścią Iron Suite, który obejmuje tworzenie dokumentów, przetwarzanie kodów kreskowych, OCR i archiwizację ZIP, wszystko z jednoczesnego instalowania Pythona. Dla deweloperów już używających IronPDF do tworzenia PDF-ów od zera, kompresja jest naturalnym kolejnym krokiem przed zapisaniem lub udostępnieniem plików.

Jak zainstalować IronPDF w Pythonie?

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-compress-pdf/install.sh
:ProductInstall
// TEN FRAGMENT KODU JEST NIEDOSTĘPNY!
:ProductInstall
SHELL

(

Zwróć uwagęIronPDF dla Python działa na bazie biblioteki IronPDF .NET, która wymaga .NET 6.0 SDK. Pobierz .NET 6.0 SDK z oficjalnej strony Microsoft przed uruchomieniem instalacji pip.

Po instalacji skonfiguruj swój klucz licencyjny dla środowisk produkcyjnych. IronPDF obejmuje bezpłatny 30-dniowy okres próbny, który obejmuje wszystkie funkcje, w tym kompresję, bez wymagania podania karty kredytowej. Strona pakietu PyPI zawiera najnowsze informacje o wersjach oraz szczegóły dotyczące zależności.

Jak skompresować pliki PDF używając IronPDF?

Przekaż liczbę całkowitą jako parametr jakościowy do CompressImages, aby zmniejszyć rozmiar osadzonych obrazów w całym dokumencie. Niższe liczby całkowite skutkują mniejszymi plikami kosztem wierności obrazu; wyższe liczby całkowite zachowują więcej szczegółów. Poniższy przykład pokazuje zarówno standardowe wywołanie kompresji, jak i zaawansowane wywołanie, które dodatkowo zmniejsza rozmiar obrazów do ich widocznego rozmiaru.

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-compress-pdf/compress-basic.py
from ironpdf import PdfDocument

# Load the PDF document from a file
pdf = PdfDocument("Image based PDF.pdf")

# Compress images to quality 60 (lower numbers increase compression)
pdf.CompressImages(60)
pdf.SaveAs("document_compressed.pdf")

# Advanced: also scale images down to their visible size in the PDF
# Note: scaling can affect image clarity if pages are resized later
pdf.CompressImages(90, True)
pdf.SaveAs("Compressed.pdf")
// TEN FRAGMENT KODU JEST NIEDOSTĘPNY!
from ironpdf import PdfDocument

# Load the PDF document from a file
pdf = PdfDocument("Image based PDF.pdf")

# Compress images to quality 60 (lower numbers increase compression)
pdf.CompressImages(60)
pdf.SaveAs("document_compressed.pdf")

# Advanced: also scale images down to their visible size in the PDF
# Note: scaling can affect image clarity if pages are resized later
pdf.CompressImages(90, True)
pdf.SaveAs("Compressed.pdf")
PYTHON

Co oznaczają parametry kompresji?

CompressImages przyjmuje dwa parametry:

  • Jakość (wymagana): Liczba całkowita od 1 do 100. Wartość 100 zachowuje oryginalną jakość obrazu, nie stosując kompresji. Wartości między 40 a 80 pokrywają większość praktycznych zastosowań, przy czym 60 jest często punktem wyjściowym dla dokumentów ogólnego przeznaczenia.
  • Skaluj do widocznego rozmiaru (opcjonalnie): wartość logiczna, której domyślną wartością jest False. Gdy True, każdy obraz jest ponownie próbkowany, aby dopasować go do wymiarów renderowanych na stronie. Dodaje to drugi etap redukcji na wierzchu kompresji jakości, co skutkuje mniejszymi plikami. Zwróć uwagę, że strony skalowane lub drukowane z wyższym DPI mogą później wykazywać artefakty.

Po zapisaniu porównaj skompresowany plik z oryginałem w dowolnym przeglądarce PDF, aby potwierdzić, że jakość spełnia Twoje wymagania. Dla dodatkowych przykładów wzorców, zobacz stronę z przykładami kompresji PDF.

Jak wygląda plik PDF przed kompresją?

Plik PDF otwarty w przeglądarce Microsoft Edge, wyświetlający rozmiar pliku 458 KB przed zastosowaniem kompresji IronPDF Python

Jak wygląda plik PDF po kompresji?

Wpis dotyczący skompresowanego pliku PDF w Eksploratorze Windows pokazujący rozmiar pliku 357 KB, co stanowi 22% redukcję w stosunku do 458 KB przy użyciu IronPDF CompressImages przy jakości 60

Porównanie pokazuje redukcję z 458 KB do 357 KB (około 22%) przy użyciu jakości 60. Pliki z większym udziałem zawartości fotograficznej zazwyczaj osiągają większe redukcje niż pliki zdominowane przez tekst lub grafikę wektorową.

Jak zastosować kompresję wsadową do wielu plików PDF?

Przetwarzanie folderu plików PDF odbywa się zgodnie z tym samym interfejsem API: iteracja nad każdym plikiem .pdf, załadowanie go za pomocą PdfDocument, wywołanie CompressImages i zapisanie wyniku. Funkcja poniżej opakowuje ten wzorzec w narzędzie wielokrotnego użytku.

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-compress-pdf/batch-compress.py
import os
from ironpdf import PdfDocument

def batch_compress_pdfs(input_folder, output_folder, quality=60):
    """
    Compress all PDF files in a folder.

    Args:
        input_folder: Path to folder containing source PDFs
        output_folder: Path where compressed PDFs will be saved
        quality: Compression quality (1–100); default is 60
    """
    # Create the output folder if it does not exist
    os.makedirs(output_folder, exist_ok=True)

    for filename in os.listdir(input_folder):
        if filename.endswith(".pdf"):
            input_path = os.path.join(input_folder, filename)
            output_path = os.path.join(output_folder, f"compressed_{filename}")

            try:
                pdf = PdfDocument(input_path)
                pdf.CompressImages(quality)
                pdf.SaveAs(output_path)
                print(f"Compressed: {filename}")
            except Exception as e:
                print(f"Error compressing {filename}: {e}")
// TEN FRAGMENT KODU JEST NIEDOSTĘPNY!
import os
from ironpdf import PdfDocument

def batch_compress_pdfs(input_folder, output_folder, quality=60):
    """
    Compress all PDF files in a folder.

    Args:
        input_folder: Path to folder containing source PDFs
        output_folder: Path where compressed PDFs will be saved
        quality: Compression quality (1–100); default is 60
    """
    # Create the output folder if it does not exist
    os.makedirs(output_folder, exist_ok=True)

    for filename in os.listdir(input_folder):
        if filename.endswith(".pdf"):
            input_path = os.path.join(input_folder, filename)
            output_path = os.path.join(output_folder, f"compressed_{filename}")

            try:
                pdf = PdfDocument(input_path)
                pdf.CompressImages(quality)
                pdf.SaveAs(output_path)
                print(f"Compressed: {filename}")
            except Exception as e:
                print(f"Error compressing {filename}: {e}")
PYTHON

Blok except zapobiega zatrzymaniu całej partii przez pojedynczy uszkodzony lub chroniony hasłem plik. Logowanie nazwy pliku wraz z komunikatem o wyjątku ułatwia identyfikację, które pliki wymagają ręcznej weryfikacji. Dla wyższych przepustowości, rozważ podział folderu na części i przetwarzanie ich w równoległych wątkach.

PoradyDla dokumentów łączących obrazy fotograficzne z diagramami technicznymi, wykonaj dwa przebiegi: jakość 50 na zdjęcia i jakość 85 na strony z dużą liczbą diagramów. Wyodrębnij i ponownie scal za pomocą API łączenia PDF, aby utrzymać każdą sekcję na optymalnym poziomie jakości.

Jakie ustawienia jakości powinieneś użyć do kompresji PDF?

Odpowiednie ustawienie jakości zależy od tego, jak PDF będzie używany po kompresji. Trzy zakresy pokrywają najczęstsze scenariusze.

Wysoka jakość (70–90): Dokumenty przeznaczone do drukowania lub formalnej dystrybucji korzystają z pozostania w tym zakresie. Tekst pozostaje ostry, a diagramy pozostają czytelne przy standardowych rozdzielczościach wydruku. Redukcja rozmiaru pliku jest skromna, zazwyczaj 10–25%, ale wynik jest nie do odróżnienia od źródła dla większości czytelników.

Średnia jakość (50–70): Ten zakres pasuje do dostarczania przez sieć i załączników e-mail. Treść fotograficzna pokazuje niewielkie zmiękczenie przy bliższym przyjrzeniu, ale zmniejszenie rozmiaru pliku (często 25–50%) znacząco poprawia czasy ładowania i dostarczalność e-maili. Większość systemów zarządzania dokumentami i przesyłanie do portalu działa dobrze przy jakości 60.

Aggresywna kompresja (30–50): Wewnętrzne archiwa, długoterminowe kopie zapasowe i dokumenty, które nie będą drukowane, mogą korzystać z tego zakresu. Przy jakości 40 obrazy są wyraźnie bardziej miękkie, ale tekst renderowany przez silnik PDF (a nie osadzony jako obrazy) pozostaje w pełni ostry. To podejście jest również odpowiednie dla dokumentów, które będą konwertowane na obrazy i zmieniane przed wyświetleniem.

WażneZawsze przechowuj oryginalny nieskompresowany plik dostępny. Kompresja jest stratna dla obrazów; nie ma sposobu na odzyskanie oryginalnych danych obrazu z skompresowanego PDF.

Jak zweryfikować wyniki kompresji w Pythonie?

Programowe sprawdzenie rozmiaru pliku wyjściowego pozwala potwierdzić, że kompresja osiągnęła zamierzony cel, zanim plik przejdzie do kolejnego etapu procesu. Wbudowana funkcja języka Python os.path.getsize zwraca liczbę bajtów dla dowolnej ścieżki pliku, więc weryfikacja nie wymaga żadnych dodatkowych bibliotek.

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-compress-pdf/verify-compression.py
import os
from ironpdf import PdfDocument

# Load and compress the document
pdf = PdfDocument("report.pdf")
original_size = os.path.getsize("report.pdf")

pdf.CompressImages(60)
pdf.SaveAs("report_compressed.pdf")

compressed_size = os.path.getsize("report_compressed.pdf")
reduction_pct = (1 - compressed_size / original_size) * 100

# Report results to confirm compression was effective
print(f"Original:   {original_size / 1024:.1f} KB")
print(f"Compressed: {compressed_size / 1024:.1f} KB")
print(f"Reduction:  {reduction_pct:.1f}%")
// TEN FRAGMENT KODU JEST NIEDOSTĘPNY!
import os
from ironpdf import PdfDocument

# Load and compress the document
pdf = PdfDocument("report.pdf")
original_size = os.path.getsize("report.pdf")

pdf.CompressImages(60)
pdf.SaveAs("report_compressed.pdf")

compressed_size = os.path.getsize("report_compressed.pdf")
reduction_pct = (1 - compressed_size / original_size) * 100

# Report results to confirm compression was effective
print(f"Original:   {original_size / 1024:.1f} KB")
print(f"Compressed: {compressed_size / 1024:.1f} KB")
print(f"Reduction:  {reduction_pct:.1f}%")
PYTHON

Wynik daje jasny procent redukcji, który można zalogować lub sprawdzić względem progu. Jeśli redukcja jest poniżej oczekiwań, dokument może zawierać mało lub brak osadzonych obrazów. W takim przypadku rozmiar pliku pozostanie w dużej mierze niezmieniony niezależnie od ustawienia jakości, ponieważ CompressImages dotyczy wyłącznie obrazów rastrowych. Tekst i grafika wektorowa nie są dotknięte tą metodą.

Zwróć uwagęKompresja IronPDF celuje w kodowanie JPEG dla obrazów rastrowych w PDFach. Standard kompresji JPEG określa kompromis jakości do rozmiaru, który kontroluje parametr jakości. Niższe wartości stosują bardziej agresywną kwantyzację JPEG, zmniejszając zarówno rozmiar pliku, jak i detale obrazu.

Jakie są kolejne kroki kompresji PDF w Pythonie?

Metoda CompressImages firmy IronPDF zapewnia programistom Pythona pojedynczy, dobrze zdefiniowany interfejs API do zmniejszania rozmiarów plików PDF. Dostosuj parametr jakości, aby zrównoważyć oszczędności przechowywania z wiernością wizualną, i dodaj bool do skalowania rozdzielczości dla drugiego etapu redukcji, gdy wymiary wyjściowe są ustalone. Dla szerszego spojrzenia na to, co obsługuje IronPDF, zobacz przegląd biblioteki PDF w Pythonie.

Rozpocznij swoją darmową wersję próbną, aby przetestować kompresję razem z pełnym zestawem funkcji IronPDF, w tym konwersją z HTML na PDF, podpisami cyfrowymi, obsługą formularzy i scalaniem dokumentów. Gdy okres próbny się skończy, zobacz opcje licencjonowania, aby znaleźć plan odpowiadający Twojemu wdrożeniu.

Gotowy, aby zobaczyć, co jeszcze potrafi IronPDF? Odkryj pełny samouczek PDF w Pythonie, aby krok po kroku poznać podstawowe możliwości IronPDF.

Często Zadawane Pytania

Jak zainstalowac IronPDF, aby skompresowac PDFy w Pythonie?

Uruchom pip install ironpdf w swoim terminalu. IronPDF dla Pythona wymaga zainstalowania SDK .NET 6.0. Po instalacji zaimportuj PdfDocument z pakietu ironpdf, aby rozpoczac kompresje PDF.

Jaki jest podstawowy kod do kompresowania pliku PDF w Pythonie?

Zaladuj plik uzywajac PdfDocument("twoj-plik.pdf"), wywolaj CompressImages(60) z liczba jakosci z zakresu od 1 do 100, i zapisz rezultat uzywajac SaveAs("skompresowany.pdf"). Dostosuj wartosc jakosci, aby zrownowazyc rozmiar pliku z dokladnoscia obrazu.

Jak parametr jakości wpływa na kompresję plików PDF?

Parametr jakosci CompressImages wacha sie od 1 do 100. Nizsze wartosci produkuja mniejsze pliki z wiekszym zmiękczeniem obrazu. Wyzsze wartosci zachowują więcej szczegółów kosztem większego pliku. Wartości między 40 a 80 obejmują większość praktycznych zastosowań, z 60 jako powszechnym punktem wyjścia.

Czy moge przekazac drugi argument do CompressImages?

Tak. Przekazanie True jako drugiego argumentu nakazuje IronPDF, aby ponownie probkowal kazdy obraz do jego widzialnych wymiarow strony przed zastosowaniem kompresji jakosci. To dodaje druga faze redukcji i produkuje mniejsze pliki, ale strony przeskalowane lub wydrukowane w wyzszych DPI pozniej moga wykazywac artefakty.

Czy kompresja PDF wplywa na tekst i grafike wektorowa?

CompressImages celuje w obrazy rastrowe osadzone w PDF. Tekst wyrenderowany przez silnik PDF i grafika wektorowa nie sa dotykane przez te metode, wiec dokumenty z niewielka iloscia lub brakiem osadzonych obrazow pokaza minimalna redukcje rozmiaru.

Jak zweryfikowac redukcje rozmiaru pliku w Pythonie?

Uzyj os.path.getsize("skompresowany.pdf"), aby odzyskac liczbe bajtow zapisanego pliku i porownaj ja z oryginalem. Dzielenie roznicy przez oryginalny rozmiar daje procent redukcji jako liczbe zmiennoprzecinkowa.

Jaki przedzial jakosci jest najlepszy dla dostarczenia w sieci?

Ustawienia jakosci miedzy 50 a 70 dobrze sie sprawdzaja dla wiekszosci dostarczen w sieci i scenariuszy e-mailowych. Ten zakres zazwyczaj zmniejsza rozmiar pliku o 25 do 50 procent, zachowujac fotograficzna zawartość w odpowiednim stanie do odczytu na ekranie.

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ę...

Czytaj więcej
Gotowy, aby rozpocząć?
Wersja: 2026.5 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu?
Uruchom przykład i zobacz, jak Twój kod HTML zamienia się w plik PDF.