Как уменьшить размер PDF-файла в Python

Документы PDF могут стать громоздкими из-за встроенных изображений, шрифтов и другого содержимого. Эффективное сжатие этих файлов имеет решающее значение для уменьшения их размера, повышения скорости передачи и оптимизации пространства для хранения.
В этом посте я покажу, как сжимать PDF-документы в Python с помощью библиотеки Python PDF.
- Сжатие PDF-документа в Python
- Сжатие изображений в PDF-документе на Python
Установите зависимость
Это решение требует установки в качестве зависимости Spire.PDF for Python, которая представляет собой библиотеку Python для чтения, создания и работы с PDF-документами в программах на Python. Вы можете установить ее, выполнив следующую команду pip.
pip install Spire.PDF
Сжатие PDF-документа в Python
Библиотека Spire.PDF предоставляет класс PdfCompressor, который можно использовать для сжатия различных элементов в PDF-документе. Следующий пример кода демонстрирует, как это сделать.
from spire.pdf.common import *
from spire.pdf import *
# Create a PdfCompressor object, specifying the path of the PDF document to be compressed
compressor = PdfCompressor("C:\Users\Administrator\Desktop\input.pdf")
# Get the OptimizationOptions object
compression_options = compressor.OptimizationOptions
# Compress content
compression_options.SetIsCompressContents(True)
# Compress fonts
compression_options.SetIsCompressFonts(True)
# Enable image compression
compression_options.SetIsCompressImage(True)
# Set image quality
compression_options.SetImageQuality(ImageQuality.Medium)
# Enable image resizing
compression_options.SetResizeImages(True)
# Save the compressed document
compressor.CompressToFile("output/Compressed.pdf")
Сжатие изображений в PDF-документе на Python
Следующий код демонстрирует, как получить изображения в PDF-документе и заменить их сжатыми версиями на языке Python.
from spire.pdf.common import *
from spire.pdf import *
# Create a PdfDocument object
doc = PdfDocument()
# Load a PDF document
doc.LoadFromFile("C:\Users\Administrator\Desktop\input.pdf")
# Set IncrementalUpdate as false
doc.FileInfo.IncrementalUpdate = False
# Create a PdfImageHelper object
imageHelper = PdfImageHelper()
# Iterate through the pages in the document
for i in range(doc.Pages.Count):
# Get a specific page
page = doc.Pages[i]
# Get image information from the page
imagesInfo = imageHelper.GetImagesInfo(page)
# Determine if there is image info in the page
if(len(imagesInfo) > 0):
# Iterater through the image info
for j in range(len(imagesInfo)):
# Get info of a specific image
imageInfo = imagesInfo[j]
# Create a PdfBitmap object based on the image
pdfBitmap = PdfBitmap(imageInfo.Image)
# Set the compression level on a scale from 0 to 100
pdfBitmap.Quality = 80
# Replace the original image with the compressed one
imageHelper.ReplaceImage(imageInfo, pdfBitmap)
# Save the document to a different PDF file
doc.SaveToFile("output/CompressImages.pdf",FileFormat.PDF)
# Dispose resources
doc.Dispose()
Заключение
В этой статье мы рассмотрели, как уменьшить размер PDF-документа с помощью Spire.PDF для Python. Будучи продвинутой библиотекой Python, она позволяет разработчикам выполнять широкий спектр операций с PDF-документами, таких как: