Đây là một giải pháp chuyên nghiệp để nén PDF bằng Python. Sử dụng PDF API tối ưu hóa của chúng tôi để phát triển phần mềm cấp cao, độc lập với nền tảng bằng Python. Hãy thử nó trực tuyến miễn phí!
Thư viện Python này cung cấp cho các nhà phát triển khả năng nén nhanh chóng và hiệu quả các PDF tài liệu theo chương trình. Dễ dàng có được đầu ra PDF được tối ưu hóa sẵn sàng để in, lưu trữ hoặc chia sẻ qua mạng. Đây là một giải pháp xử lý PDF tài liệu độc lập cho Python mà không yêu cầu cài đặt bất kỳ phần mềm bên thứ ba nào.
Sản phẩm của chúng tôi cung cấp cho các nhà phát triển Python một API tích hợp để giảm kích thước PDF tệp. Nén PDF được thực hiện trong hai lần. Trong lần chuyển đầu tiên, tất cả các trang của PDF được chuyển đổi sang định dạng hình ảnh. Sản phẩm của chúng tôi sử dụng các thuật toán nén hình ảnh thích ứng và hiệu quả cao cho phép các nhà phát triển có được đầu ra PDF nhỏ gọn trong khi vẫn duy trì chất lượng tối ưu của tài liệu. Trong lần chuyển tiếp theo, chuỗi hình ảnh được nén và kết hợp để tạo thành nội dung của PDF tệp mới, được tối ưu hóa.
Nén PDF dễ dàng với 'Aspose.Words for Python via .NET'. Ví dụ sau minh họa cách giảm kích thước của PDF tệp trong Python:
pip install aspose-words
Sao chép
import aspose.words as aw
renderer = aw.pdf2word.fixedformats.PdfFixedRenderer()
pdf_read_options = aw.pdf2word.fixedformats.PdfFixedOptions()
pdf_read_options.image_format = aw.pdf2word.fixedformats.FixedImageFormat.JPEG
pdf_read_options.jpeg_quality = 50
with open ("Input.pdf", 'rb') as pdf_stream:
pages_stream = renderer.save_pdf_as_images(pdf_stream, pdf_read_options);
builder = aw.DocumentBuilder()
for i in range(0, len(pages_stream)):
# Đặt kích thước trang tối đa để tránh chia tỷ lệ hình ảnh trang hiện tại.
max_page_dimension = 1584
page_setup = builder.page_setup
set_page_size(page_setup, max_page_dimension, max_page_dimension)
page_image = builder.insert_image(pages_stream[i])
set_page_size(page_setup, page_image.width, page_image.height)
page_setup.top_margin = 0
page_setup.left_margin = 0
page_setup.bottom_margin = 0
page_setup.right_margin = 0
if i != len(pages_stream) - 1:
builder.insert_break(aw.BreakType.SECTION_BREAK_NEW_PAGE)
save_options = aw.saving.PdfSaveOptions()
save_options.cache_background_graphics = true
builder.document.save("Output.pdf", save_options)
def set_page_size(page_setup, width, height):
page_setup.page_width = width;
page_setup.page_height = height;
import aspose.words as aw
doc = aw.Document("Input.pdf")
doc.cleanup()
shapes = [node.as_shape() for node in doc.get_child_nodes(aw.NodeType.SHAPE, True)]
for shape in shapes:
if shape.isImage:
# Tùy nhà phát triển chọn thư viện để nén ảnh.
image = Image.open(shape.image_data.to_stream())
# ...
# Nén hình ảnh và đặt nó trở lại hình dạng.
shape.image_data.set_image("yourCompressedImage")
save_options = aw.saving.PdfSaveOptions
save_options.cache_background_graphics = true
doc.save("Output.pdf", save_options)
import aspose.words as aw
doc = aw.Document("Input.pdf")
doc.cleanup()
shapes = [node.as_shape() for node in doc.get_child_nodes(aw.NodeType.SHAPE, True)]
for shape in shapes:
if shape.isImage:
# Tùy nhà phát triển chọn thư viện để nén ảnh.
image = Image.open(shape.image_data.to_stream())
# ...
# Nén hình ảnh và đặt nó trở lại hình dạng.
shape.image_data.set_image("yourCompressedImage")
doc.save("Output.pdf")
import aspose.words as aw
doc = aw.Document("Input.pdf")
doc.cleanup()
shapes = [node.as_shape() for node in doc.get_child_nodes(aw.NodeType.SHAPE, True)]
for shape in shapes:
if shape.isImage:
# Tùy nhà phát triển chọn thư viện để nén ảnh.
image = Image.open(shape.image_data.to_stream())
# ...
# Nén hình ảnh và đặt nó trở lại hình dạng.
shape.image_data.set_image("yourCompressedImage")
save_options = aw.saving.OoxmlSaveOptions
save_options.compression_level = aw.saving.CompressionLevel.MAXIMUM
doc.save("Output.pdf", save_options)
import aspose.words as aw
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.InsertImage("Input.pdf")
save_options = aw.saving.ImageSaveOptions(aw.SaveFormat.PDF)
shape.get_shape_renderer().save("Output.pdf", save_options)
import aspose.words as aw
renderer = aw.pdf2word.fixedformats.PdfFixedRenderer()
pdf_read_options = aw.pdf2word.fixedformats.PdfFixedOptions()
pdf_read_options.image_format = aw.pdf2word.fixedformats.FixedImageFormat.JPEG
pdf_read_options.jpeg_quality = 50
with open ("Input.pdf", 'rb') as pdf_stream:
pages_stream = renderer.save_pdf_as_images(pdf_stream, pdf_read_options);
builder = aw.DocumentBuilder()
for i in range(0, len(pages_stream)):
# Đặt kích thước trang tối đa để tránh chia tỷ lệ hình ảnh trang hiện tại.
max_page_dimension = 1584
page_setup = builder.page_setup
set_page_size(page_setup, max_page_dimension, max_page_dimension)
page_image = builder.insert_image(pages_stream[i])
set_page_size(page_setup, page_image.width, page_image.height)
page_setup.top_margin = 0
page_setup.left_margin = 0
page_setup.bottom_margin = 0
page_setup.right_margin = 0
if i != len(pages_stream) - 1:
builder.insert_break(aw.BreakType.SECTION_BREAK_NEW_PAGE)
save_options = aw.saving.PdfSaveOptions()
save_options.cache_background_graphics = true
builder.document.save("Output.pdf", save_options)
def set_page_size(page_setup, width, height):
page_setup.page_width = width;
page_setup.page_height = height;
Chúng tôi lưu trữ các gói Python trong kho lưu trữ PyPi. Vui lòng làm theo hướng dẫn từng bước về cách cài đặt "Aspose.Words for Python via .NET" vào môi trường nhà phát triển của bạn.
Gói này tương thích với Python ≥3.5 và <3.12. Nếu bạn phát triển phần mềm cho Linux, vui lòng xem các yêu cầu bổ sung đối với gcc và libpython trong Tài liệu sản phẩm.