python - Python 不使用 pyPDF2 打印 PDF
问题描述
我尝试打印 pdf 文档的页面:
import PyPDF2
FILE_PATH = 'my.pdf'
with open(FILE_PATH, mode='rb') as f:
reader = PyPDF2.PdfFileReader(f)
page = reader.getPage(0) # I tried also other pages e.g 1,2,..
print(page.extractText())
但我只得到很多空白,没有错误消息。会不会是 PyPDF2 不支持这个 pdf 版本(my.pdf)?
这解决了它(打印文档的所有页面)。谢谢
from pdfreader import SimplePDFViewer
fd = open("my.pdf", "rb")
viewer = SimplePDFViewer(fd)
for i in range(1,16): # need range from 1 - max number of pages +1
viewer.navigate(i)
viewer.render()
page_1_content=viewer.canvas.text_content
page_1_text = "".join(viewer.canvas.strings)
print (page_1_text)
解决方案
如果它是空白的,要么是 PDF 正在被读取,而且它的格式不能被 pypdf 读取,所以它只是输出空白。也许放入绝对文件路径而不是相对文件路径。如果所有其他方法都失败了,请尝试使用不同的 PDF,如果有一个版本可以工作而您的版本不行,您可能需要将您的版本转换为该工作类型。
推荐阅读
- android - Gradle 如何包含 build.gradle 中未包含的依赖项
- elasticsearch - ES 6.x,join类型,当父子文档有相同字段时。将其存储为一个或两个字段?
- javascript - 替换孩子而不是将其附加到表中
- google-api - 创建始终与用户共享的文件和文件夹
- google-bigquery - 使用 DataStudio 为 BigQuery 中的自定义查询指定日期范围,其中日期范围会影响查询中的运算符
- java - 如何实例化具有带参数的私有构造函数的泛型类
- python - pydotplus 工作不正常,决策树可视化错误?
- android - (实例中缺少 Vulkan 1.0 API)通过 Android Studio 3.5 和 3.6 Canary 9 启动 Android Emulator(Q API 29)时
- apache-kafka - Spring Cloud @StreamListener 消费者未在消费者组中注册 CONSUMER-ID、HOST 和 CLIENT-ID
- c# - lambda中的初始化惰性字段未在多个线程之间重用