from pdf2image import convert_from_path
images = convert_from_path['path.pdf',poppler_path=r"E:/software/poppler-0.67.0/bin"]
for i in range[len[images]]:
images[i].save['image_name'+ str[i] +'.jpg', 'JPEG']
Nhưng bây giờ tôi muốn chuyển đổi hơn 100 tệp PDF thành hình ảnh. Không có cách nào khác ư? Cảm ơn trước.
jtlz2
6.7807 Huy hiệu vàng59 Huy hiệu bạc102 Huy hiệu Đồng7 gold badges59 silver badges102 bronze badges
hỏi ngày 18 tháng 9 năm 2021 lúc 17:36Sep 18, 2021 at 17:36
3
Bạn có thể sử dụng Glob để 'Quả cầu' tên tệp vào danh sách: Glob Python ở đây //docs.python.org/3/l Library/glob.html - nhưng đó là một biểu thức chung để sử dụng mở rộng ký tự đại diện trong [** Nix] Hệ thống tập tin [//en.wikipedia.org/wiki/glob_[Programming]]. Tôi cho rằng nó hoạt động dưới Windows :]
Sau đó, bạn chỉ cần lặp qua các tập tin. Này Presto!
import glob
from pdf2image import convert_from_path
poppler_path = r"E:/software/poppler-0.67.0/bin"
pdf_filenames = glob.glob['/path/to/image_dir/*.pdf']
for pdf_filename in pdf_filenames:
images = convert_from_path[pdf_filename, poppler_path=poppler_path]
for i in range[len[images]]:
images[i].save[f"{pdf_filename}{i}.jpg", 'JPEG']
! Mẹo: f"{pdf_filename}{i}.jpg"
là một Python f-string
mang đến cho người đọc một ý tưởng tốt hơn về chuỗi sẽ trông như thế nào. Bạn có thể muốn 0 pad các số nguyên ở đó, bởi vì đến một lúc nào đó bạn có thể muốn 'quả cầu' đó hoặc một số như vậy. Có rất nhiều cách để đạt được điều đó - xem làm thế nào để chuyển số 0 đến một chuỗi? Ví dụ.
Đã trả lời ngày 18 tháng 9 năm 2021 lúc 17:46Sep 18, 2021 at 17:46
jtlz2jtlz2jtlz2
6.7807 Huy hiệu vàng59 Huy hiệu bạc102 Huy hiệu Đồng7 gold badges59 silver badges102 bronze badges
hỏi ngày 18 tháng 9 năm 2021 lúc 17:36
Bạn có thể sử dụng Glob để 'Quả cầu' tên tệp vào danh sách: Glob Python ở đây //docs.python.org/3/l Library/glob.html - nhưng đó là một biểu thức chung để sử dụng mở rộng ký tự đại diện trong [** Nix] Hệ thống tập tin [//en.wikipedia.org/wiki/glob_[Programming]]. Tôi cho rằng nó hoạt động dưới Windows :]
- Sau đó, bạn chỉ cần lặp qua các tập tin. Này Presto!
os.listdir[path to folder containing pdf files]
! Mẹo: f"{pdf_filename}{i}.jpg"
là một Python f-string
mang đến cho người đọc một ý tưởng tốt hơn về chuỗi sẽ trông như thế nào. Bạn có thể muốn 0 pad các số nguyên ở đó, bởi vì đến một lúc nào đó bạn có thể muốn 'quả cầu' đó hoặc một số như vậy. Có rất nhiều cách để đạt được điều đó - xem làm thế nào để chuyển số 0 đến một chuỗi? Ví dụ.
Đã trả lời ngày 18 tháng 9 năm 2021 lúc 17:46
- Bạn có thể sẽ cần sử dụng mô -đun HĐH.
images = convert_from_path['path.pdf',poppler_path=r"E:/software/poppler-0.67.0/bin"]
for i in range[len[images]]:
images[i].save['image_name'+ str[i] +'.jpg', 'JPEG']
Bước đầu tiên:
Sử dụng chức năng OS.ListDir như thế nàySep 18, 2021 at 18:39
Có một thư viện tuyệt vời dễ sử dụng có tên PDF2Image chuyển đổi các tệp PDF thành hình ảnh JPEG hoặc PNG theo yêu cầu. Nó hoạt động khá tốt, nhưng nó tạo ra nhiều tệp cho các tệp PDF nhiều trang và tôi cần một hình ảnh duy nhất chứa tất cả các tệp trong tệp PDF, được hợp nhất theo chiều dọc, vì vậy Sau đó, tôi tìm thấy gối để thao tác/xử lý các tệp hình ảnh, từ đó tôi có thể hợp nhất nhiều tệp hình ảnh với nhau. Nó đi từ đây: Cài đặt yêu cầu hai mô -đun Python và một số thư viện bổ sung để xử lý các tệp PDF. Để cài đặt gối: Để cài đặt PDF2Image:pdf2image
không đáp ứng mọi nhu cầu của tôi.Yêu cầu
pdf2image
yêu cầu
0, bản thân repo có các hướng dẫn cài đặt. Vì tôi là người dùng macOS, tôi chỉ cần chạy:import glob
from pdf2image import convert_from_path
poppler_path = r"E:/software/poppler-0.67.0/bin"
pdf_filenames = glob.glob['/path/to/image_dir/*.pdf']
for pdf_filename in pdf_filenames:
images = convert_from_path[pdf_filename, poppler_path=poppler_path]
for i in range[len[images]]:
images[i].save[f"{pdf_filename}{i}.jpg", 'JPEG']
Mọi thứ đã sẵn sàng.
Mật mã
Dưới đây đoạn mã được viết bằng
import glob
from pdf2image import convert_from_path
poppler_path = r"E:/software/poppler-0.67.0/bin"
pdf_filenames = glob.glob['/path/to/image_dir/*.pdf']
for pdf_filename in pdf_filenames:
images = convert_from_path[pdf_filename, poppler_path=poppler_path]
for i in range[len[images]]:
images[i].save[f"{pdf_filename}{i}.jpg", 'JPEG']
1. Trước tiên, nó chuyển đổi PDF thành nhiều hình ảnh và sau đó hợp nhất chúng lại với nhau. Chạy nó với đường dẫn tệp PDF nguồn và đường dẫn thư mục đầu ra mà bạn muốn JPEG được xuất.import os
import tempfile
from pdf2image import convert_from_path
from PIL import Image
def convert_pdf[file_path, output_path]:
# save temp image files in temp dir, delete them after we are finished
with tempfile.TemporaryDirectory[] as temp_dir:
# convert pdf to multiple image
images = convert_from_path[file_path, output_folder=temp_dir]
# save images to temporary directory
temp_images = []
for i in range[len[images]]:
image_path = f'{temp_dir}/{i}.jpg'
images[i].save[image_path, 'JPEG']
temp_images.append[image_path]
# read images into pillow.Image
imgs = list[map[Image.open, temp_images]]
# find minimum width of images
min_img_width = min[i.width for i in imgs]
# find total height of all images
total_height = 0
for i, img in enumerate[imgs]:
total_height += imgs[i].height
# create new image object with width and total height
merged_image = Image.new[imgs[0].mode, [min_img_width, total_height]]
# paste images together one by one
y = 0
for img in imgs:
merged_image.paste[img, [0, y]]
y += img.height
# save merged image
merged_image.save[output_path]
return output_path