使用 python 旋转扫描的 pdf 后,它工作得很好,但将 pdf 发送给第三方后,第三方仍然将 pdf 检测为 90 度 pdf 有什么办法可以解决旋转和这个问题
import PyPDF2
with open('input.pdf', 'rb') as file:
# Create a PDF reader object
reader = PyPDF2.PdfReader(file)
# Create a PDF writer object
writer = PyPDF2.PdfWriter()
# Rotate each page by 90 degrees and add it to the writer object
for page_num in range(len(reader.pages)):
page = reader.pages[page_num]
page.rotate(90) # Rotate clockwise with negative angle
writer.add_metadata({
'/Rotate': '0' # Set the desired rotation value (adjust as needed)
})
writer.add_page(page)
# Write the rotated pages to a new PDF file
with open('offffutput.pdf', 'wb') as output_file:
writer.write(output_file)
代码的问题在于你正在为 每个页面 设置元数据,而不是为 文档 设置。
试试这个修改后的代码:
import PyPDF2
with open('input.pdf', 'rb') as file:
# Create a PDF reader object
reader = PyPDF2.PdfReader(file)
# Create a PDF writer object
writer = PyPDF2.PdfWriter()
# Rotate each page by 90 degrees and add it to the writer object
for page_num in range(len(reader.pages)):
page = reader.pages[page_num]
page.rotate(90) # Rotate clockwise
writer.add_page(page)
# Set the /Rotate metadata for the entire document AFTER adding pages
writer.metadata['/Rotate'] = '0'
# Write the rotated pages to a new PDF file
with open('output.pdf', 'wb') as output_file:
writer.write(output_file)
说明:
-
旋转页面:
代码使用
page.rotate(90)
旋转每个页面。 -
添加页面到writer:
旋转后的页面被添加到
writer
对象。 -
设置文档元数据:
关键区别在于我们现在在
所有页面都被添加到
writer
之后 使用writer.metadata['/Rotate'] = '0'
来设置/Rotate
元数据。 这确保元数据应用于整个文档,而不仅仅是最后一页。 - 写入文件: 最后,旋转后的页面和更新的元数据被写入输出 PDF 文件。
这个修改应该可以解决第三方应用程序无法正确检测旋转的问题。
标签:python,pdf,rotation From: 76647578