里程碑v3
This commit is contained in:
parent
9cab9ac777
commit
1818833cc5
33
main.py
33
main.py
@ -8,7 +8,6 @@ from PIL import Image
|
||||
import io
|
||||
from reportlab.lib.pagesizes import letter
|
||||
from reportlab.pdfgen import canvas
|
||||
from utils import ArrayUtil
|
||||
|
||||
|
||||
def get_html(url, max_retries=3):
|
||||
@ -97,34 +96,6 @@ def save_images_to_directory(img_obj_list, directory_path):
|
||||
print(f"图片保存失败:{e}")
|
||||
|
||||
|
||||
def generate_pdf_from_images(img_obj_list, output_file):
|
||||
try:
|
||||
c = canvas.Canvas(output_file, pagesize=letter)
|
||||
|
||||
for img_obj in img_obj_list:
|
||||
# 从图片对象的 data 字段中创建图像对象
|
||||
img_data = img_obj["data"]
|
||||
img = Image.open(io.BytesIO(img_data))
|
||||
|
||||
# 将图像大小调整为 PDF 页面大小
|
||||
img_width, img_height = img.size
|
||||
pdf_width, pdf_height = letter
|
||||
scale = min(pdf_width / img_width, pdf_height / img_height)
|
||||
new_width, new_height = int(img_width * scale), int(img_height * scale)
|
||||
img = img.resize((new_width, new_height), Image.ANTIALIAS)
|
||||
|
||||
# 将图像添加到 PDF 页面中
|
||||
c.drawInlineImage(img, 0, 0, width=new_width, height=new_height)
|
||||
|
||||
# 创建新的页面
|
||||
c.showPage()
|
||||
|
||||
c.save()
|
||||
print("PDF 生成成功!")
|
||||
except Exception as e:
|
||||
print(f"PDF 生成失败:{e}")
|
||||
|
||||
|
||||
def concatenate_images_vertically(img_obj_list, output_file):
|
||||
try:
|
||||
# 计算拼接后的长图宽度和总高度
|
||||
@ -148,7 +119,7 @@ def concatenate_images_vertically(img_obj_list, output_file):
|
||||
y_offset += img_height
|
||||
|
||||
# 保存拼接后的长图到本地
|
||||
# long_image.save(output_file)
|
||||
long_image.save(output_file)
|
||||
|
||||
|
||||
except Exception as e:
|
||||
@ -173,7 +144,7 @@ def process_batch(lines):
|
||||
|
||||
# save_images_to_directory(img_obj_list, directory_path="imgs")
|
||||
concatenate_images_vertically(
|
||||
img_obj_list, output_file=f"imgs/{file_name}.pdf"
|
||||
img_obj_list, output_file=f"imgs/{file_name}.png"
|
||||
)
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user