通过for循环将图像写入PDF,图像会出现故障



显示的脚本比我所做的要简单一点,但它仍然会遇到与原始相同的问题

我想做的是截屏一个网页,转到下一页并截屏,然后将其编译成PDF,我试图避免将图像写入硬盘,然后写入PDF,然后从硬盘上删除图像。

现在图像有时会出现故障,我认为这是因为无法足够快地将图像写入PDF,或者操作顺序被搞砸了。我是新来的,所以我不确定。我试着改变等待时间,我试着将所有图像保存到字典中,并在字典中循环,更糟糕的是重复同样的4个图像。我只是知道我做得不对。任何建议。

from PIL import ImageGrab, Image
from fpdf import FPDF
from win32api import GetSystemMetrics
import io
import time
from fpdf import FPDF
import keyboard
pdf_width = GetSystemMetrics(0)
pdf_height = GetSystemMetrics(1)
t = 10
pdf = FPDF(unit = "pt", format = [pdf_width,pdf_height])
for x in range(0, t):
img = ImageGrab.grab()
print(x)
mem_file = io.BytesIO()
img.save(mem_file, 'JPEG')
data = mem_file.getvalue()
my_img = Image.open(io.BytesIO(data))
pdf.add_page()
pdf.image(my_img,0,0)
keyboard.press_and_release('right') 
time.sleep(2)
if x == (t-1):
pdf.output('test.pdf', 'F')

示例图片

标记为1-3的图片按顺序排列图片4与图片2相同,但不是正确的

经过数小时的尝试和阅读,我发了一篇帖子,离开了几次,回来后在15分钟内就搞定了。今天早上我试着用dict,但没有成功,所以我认为列表不起作用。

t = int(page_count)
time.sleep(1)
pdf = FPDF(unit = "pt", format = [pdf_width,pdf_height])
for x in range(0, t):
string.append(ImageGrab.grab())
print(x)
mem_file = io.BytesIO()
string[x].save(mem_file, 'JPEG')
data = mem_file.getvalue()
string[x] = Image.open(io.BytesIO(data))
pdf.add_page()
pdf.image((string[x]),0,0)
keyboard.press_and_release('right')
ispage_Loading(driver)  
time.sleep(WAIT)
if x == (t-1):
pdf.output(dir_path+'\'+book_name+'.pdf', 'F')
winsound.PlaySound("*", winsound.SND_ALIAS)
explore(dir_path)

最新更新