使用Python InsecureClient拆分PDF并写回HDFS的问题求助
PDF拆分后写入HDFS空白问题排查及修复
问题根因
- 错误1:
PdfFileWriter.appendPagesFromReader()方法无返回值,代码中赋值给output的变量实际为None,写入空内容到HDFS,导致生成的文件无有效内容。 - 错误2:
appendPagesFromReader()会追加输入PDF的全部页面到输出对象,不符合单页拆分的需求,且未调用getPage(i)方法提取指定页码的内容。 - 错误3:
PdfFileWriter生成的PDF内容不能直接写入文件流,需要先写入内存字节缓冲对象,再从缓冲中读取二进制内容写入HDFS。
修复后代码
for i in range(input_pdf.getNumPages()): out_pdf = PdfFileWriter() # 提取指定单页添加到输出PDF对象 out_pdf.addPage(input_pdf.getPage(i)) filename = "/shared/Team5162/demopdf/"+"document-page%s.pdf" % i # 借助BytesIO缓冲生成PDF二进制内容 with BytesIO() as pdf_buffer: out_pdf.write(pdf_buffer) # 将缓冲指针移到起始位置读取完整内容 pdf_buffer.seek(0) # 写入HDFS路径 with client.write(filename) as writeStream: writeStream.write(pdf_buffer.read())
内容的提问来源于stack exchange,提问作者Kannan Nair
相关产品推荐
相关产品推荐

