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 IronPDF umożliwia programistom Pythona zmniejszenie rozmiarów plików PDF poprzez kompresję osadzonych obrazów z regulowanymi ustawieniami jakości, co pomaga zoptymalizować przechowywanie i przyspieszyć udostępnianie dokumentów bez poświęcania 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
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 dlaczego 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 akceptuje liczbę jakości od 1 do 100 oraz opcjonalny parametr bool, który skaluje 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ę jakości 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")
PYTHON

Co oznaczają parametry kompresji?

CompressImages akceptuje 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.
  • Skalowanie do widocznego rozmiaru (opcjonalnie): Parametr bool, który domyślnie wynosi False. Gdy True, każdy obraz jest resamplowany do dopasowania jego 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 pokazujący rozmiar pliku 458 KB przed zastosowaniem kompresji IronPDF Python

Jak wygląda plik PDF po kompresji?

Skompresowany plik PDF w Windows Explorer pokazujący rozmiar pliku 357 KB, 22% zmniejszenie z 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ą.

Icon Quote related to Jak wygląda plik PDF po 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 related to Jak wygląda plik PDF po kompresji?

Milan Jovanovic

Microsoft MVP

Zobacz studium przypadku
Icon Quote related to Jak wygląda plik PDF po kompresji?

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 related to Jak wygląda plik PDF po kompresji?

Brent Matzelle

Dyrektor technologiczny, OPYN

Zobacz studium przypadku
Icon Quote related to Jak wygląda plik PDF po kompresji?

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 related to Jak wygląda plik PDF po kompresji?

David Jones

Główny inżynier oprogramowania, Agorus Build

Zobacz studium przypadku

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

Przetwarzanie folderu plików PDF odbywa się za pomocą tego samego API: iteruj po każdym pliku .pdf, załaduj go za pomocą PdfDocument, wywołaj CompressImages i zapisz wynik. 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 hasłem zabezpieczony 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?

Sprawdzenie rozmiaru pliku wyjściowego programowo potwierdza, że kompresja spełniła Twój cel przed przeniesieniem pliku do następnego etapu w tłoków audio. Wbudowana funkcja Pythona os.path.getsize zwraca liczbę bajtów dla dowolnej ścieżki pliku, więc weryfikacja nie wymaga 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}%")
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, bez względu na ustawienie jakości, ponieważ CompressImages jest skierowane tylko na obrazy rastrowe. 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 IronPDF daje programistom Pythona jedno, dobrze zdefiniowane 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.6 właśnie wydany
Still Scrolling Icon

Wciąż przewijasz?

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