|
发表于 2024-4-10 16:22:43
|
显示全部楼层
非常抱歉,我之前的回答有误。在`fitz.Rect`中,我们需要提供四个坐标参数来创建矩形对象,而不是直接传递字典对象。对于图片,我们可以从字典对象`image`中获取其矩形区域信息,然后提取出四个坐标参数。请修改代码如下:import fitzdef compress_pdf(input_pdf_path, output_pdf_path, garbage=3, colorspace=fitz.csRGB, dpi=72): doc = fitz.open(input_pdf_path) doc_new = fitz.open() for page in doc: images = page.get_images() # 获取当前页中的所有图片 if not images: # 如果当前页没有图片,则直接添加到新的PDF文件中 doc_new.insert_page(-1, page) continue new_page = doc_new.new_page(-1) for image in images: xref = image[0] # 获取图片的XRef值 x0, y0, x1, y1 = image[2] # 获取图片的矩形区域坐标 rect = fitz.Rect(x0, y0, x1, y1) # 创建矩形对象 new_page.insert_image(rect=rect, pixmap=page.extract_image(xref)) # 将图片插入到新的PDF文件中 doc_new.save(output_pdf_path, garbage=garbage, deflate=False, deflate_images=True, deflate_fonts=True, pretty=True) doc.close() doc_new.close()compress_pdf('1.pdf', '10.pdf', garbage=3, colorspace=fitz.csRGB, dpi=72)请尝试使用这个修改后的代码,并再次运行程序。这样应该能够成功压缩PDF并保留文字部分,同时避免了可能出现的异常。如果还有其他问题,请随时告诉我。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|