PNG
JPG
BMP
TIFF
PDF
Сжатие PDF в Python SDK
Оптимизация PDF документа с использованием облачного SDK для Python.
Get StartedКак сжать PDF через облачный SDK для Python
Для сжатия PDF мы будем использовать Aspose.PDF Cloud Python SDK. Этот облачный SDK помогает программистам на Python разрабатывать облачные приложения для создания, аннотирования, редактирования и конвертации PDF с использованием языка программирования Python через REST API Aspose.PDF. Просто создайте учетную запись на Aspose for Cloud и получите информацию о своем приложении. Как только у вас есть App SID & ключ, вы готовы использовать Aspose.PDF Cloud Python SDK. Если пакет Python размещен на Github, вы можете установить его напрямую оттуда:
Установка с Github
pip install git+https://github.com/aspose-pdf-cloud/aspose-pdf-cloud-python.git
Команда консоли диспетчера пакетов
pip install asposepdfcloud
Шаги по сжатию PDF через Python SDK
Разработчики Aspose.PDF Cloud могут легко загрузить и оптимизировать PDF всего за несколько строк кода.
- Установите Python SDK
- Определите класс конфигурации
- Инициализируйте клиент PDF API
- Загрузите PDF документ с помощью метода upload_document
- Сожмите PDF документ, используя метод compress_pdf_document (в этом примере мы сжимаем изображения и уменьшаем их качество, вы можете установить другие параметры, если это необходимо). Проверьте страницы документации, если вам нужны подробности.
- Отправьте запрос на сжатие через post_optimize_document().
- Загрузите получившийся PDF
Сжатие PDF с использованием Python
import shutil
import json
import logging
from pathlib import Path
from asposepdfcloud import ApiClient, PdfApi, OptimizeOptions
# Configure logging
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")
class Config:
"""Configuration parameters."""
CREDENTIALS_FILE = Path(r"Credentials/credentials.json")
LOCAL_FOLDER = Path(r"C:\Samples")
TEMP_FOLDER = 'TempPdfCloud'
PDF_DOCUMENT_NAME = "sample.pdf"
LOCAL_RESULT_DOCUMENT_NAME = "output_sample.pdf"
class PdfCompress:
"""Class for compress PDF links using Aspose PDF Cloud API."""
def __init__(self, credentials_file: Path = Config.CREDENTIALS_FILE):
self.pdf_api = None
self._init_api(credentials_file)
def _init_api(self, credentials_file: Path):
"""Initialize the API client."""
try:
with credentials_file.open("r", encoding="utf-8") as file:
credentials = json.load(file)
api_key, app_id = credentials.get("key"), credentials.get("id")
if not api_key or not app_id:
raise ValueError("init_api(): Error: Missing API keys in the credentials file.")
self.pdf_api = PdfApi(ApiClient(api_key, app_id))
except (FileNotFoundError, json.JSONDecodeError, ValueError) as e:
logging.error(f"init_api(): Failed to load credentials: {e}")
def upload_document(self):
"""Upload a PDF document to the Aspose Cloud server."""
if self.pdf_api:
file_path = Config.LOCAL_FOLDER / Config.PDF_DOCUMENT_NAME
stotage_path = Config.TEMP_FOLDER + '/' + Config.PDF_DOCUMENT_NAME
try:
self.pdf_api.upload_file(stotage_path, str(file_path))
logging.info(f"upload_document(): File {Config.PDF_DOCUMENT_NAME} uploaded successfully.")
except Exception as e:
logging.error(f"upload_document(): Failed to upload file: {e}")
def download_result(self):
"""Download the processed PDF document from the Aspose Cloud server."""
if self.pdf_api:
try:
temp_file = self.pdf_api.download_file(Config.TEMP_FOLDER + '/' + Config.PDF_DOCUMENT_NAME)
local_path = Config.LOCAL_FOLDER / Config.LOCAL_RESULT_DOCUMENT_NAME
shutil.move(temp_file, str(local_path))
logging.info(f"download_result(): File successfully downloaded: {local_path}")
except Exception as e:
logging.error(f"download_result(): Failed to download file: {e}")
def compress_pdf_document(self):
"""Compress the PDF document."""
if self.pdf_api:
optimize_options = OptimizeOptions(
allow_reuse_page_content=False,
compress_images=True,
image_quality=75,
link_duplcate_streams=False,
remove_unused_objects=False,
remove_unused_streams=False,
unembed_fonts=False
)
opts = {
"options" : optimize_options,
"folder" : Config.TEMP_FOLDER
}
try:
response = self.pdf_api.post_optimize_document(Config.PDF_DOCUMENT_NAME, **opts)
if response.code == 200:
logging.info(f"compress_pdf_document(): PDF document '{Config.PDF_DOCUMENT_NAME}' successfully compressed.")
else:
logging.error(f"compress_pdf_document(): Failed to compress document. Response code: {response.code}")
except Exception as e:
logging.error(f"compress_pdf_document(): Error while compress document: {e}")
if __name__ == "__main__":
pdf_compress = PdfCompress()
pdf_compress.upload_document()
pdf_compress.compress_pdf_document()
pdf_compress.download_result()
С помощью нашей библиотеки Python вы можете:
Сжимать PDF документы с помощью Aspose.PDF Cloud Python SDK.
- Объединять PDF документы.
- Разделять PDF файлы.
- Конвертировать PDF в другие форматы и наоборот.
- Управлять аннотациями.
- Работать с изображениями в PDF и т.д.
- Вы можете попробовать наше бесплатное приложение, чтобы протестировать функциональность онлайн.