PyPDF 模块无法生成有效的 pdf 文件
PyPDF module doesn' t make valid pdf file
我正在尝试在 python 中制作一些程序来操纵我的 pdf beamer 演示文稿。教授使用点击动态转换,因此一页有多个点击转换。我想打印这些演示文稿,但我有大约 5000 页。所以我只想使用最后一次点击转换页面,所以我会将页面数量减少到 500 左右。我正在使用 PyPDF2 模块,但它不能生成有效的 pdf 文件。这是代码:
from pyPdf import PdfFileWriter, PdfFileReader
import os,sys
pdful = raw_input("Uneti ime fajla:")
output = PdfFileWriter()
input1 = PdfFileReader(open(pdful, "rb"))
m = []
f = True
print ("Uneti strane koje zelite da zadrzite.String 0 kraj unosa:\n")
while f:
l = int(raw_input("Uneti broj stranice:"))
if l == 0:
f = not f
else: m.append(l-1)
for i in range(len(m)):
strana = input1.getPage(int(m[i]))
output.addPage(strana)
outputStream = file("Mat8.pdf","wb")
output.write(outputStream)
# string writings are in Serbian, but that's not so important. Program should take input from user: name of file to manipulate, and pages that should copy.
from pyPdf import PdfFileWriter, PdfFileReader
pyPdf 已经停产,取而代之的是 PyPDF2。我不确定 Python 2,但在 Python 3 中你应该 import PyPDF2
。
- 不需要
import os, sys
。但是,如果您确实使用了 sys.argv
,则可以在 bash 中调用 python3 xyz.py some_arg
。这样sys.argv[1] == some_arg
我宁愿改用地图,只要您不需要逐行读取输入即可。例如,
print ("Uneti strane koje zelite da zadrzite.String 0 kraj unosa:\n")
m = map (lambda x: int(x) - 1, raw_input("Uneti broj stranice:").split())
而不是 while
循环。此外,遍历对象而不是索引。
for page_number in m:
strana = input1.getPage(page_number)
output.addPage(strana)
最后,用with
封装文件操作。 Python 将自动处理文件的关闭,以免您忘记这样做。
with open (pdful, 'wb') as outputStream:
output.write(outputStream)
我正在尝试在 python 中制作一些程序来操纵我的 pdf beamer 演示文稿。教授使用点击动态转换,因此一页有多个点击转换。我想打印这些演示文稿,但我有大约 5000 页。所以我只想使用最后一次点击转换页面,所以我会将页面数量减少到 500 左右。我正在使用 PyPDF2 模块,但它不能生成有效的 pdf 文件。这是代码:
from pyPdf import PdfFileWriter, PdfFileReader
import os,sys
pdful = raw_input("Uneti ime fajla:")
output = PdfFileWriter()
input1 = PdfFileReader(open(pdful, "rb"))
m = []
f = True
print ("Uneti strane koje zelite da zadrzite.String 0 kraj unosa:\n")
while f:
l = int(raw_input("Uneti broj stranice:"))
if l == 0:
f = not f
else: m.append(l-1)
for i in range(len(m)):
strana = input1.getPage(int(m[i]))
output.addPage(strana)
outputStream = file("Mat8.pdf","wb")
output.write(outputStream)
# string writings are in Serbian, but that's not so important. Program should take input from user: name of file to manipulate, and pages that should copy.
from pyPdf import PdfFileWriter, PdfFileReader
pyPdf 已经停产,取而代之的是 PyPDF2。我不确定 Python 2,但在 Python 3 中你应该 import PyPDF2
。
- 不需要
import os, sys
。但是,如果您确实使用了sys.argv
,则可以在 bash 中调用python3 xyz.py some_arg
。这样sys.argv[1] == some_arg
我宁愿改用地图,只要您不需要逐行读取输入即可。例如,
print ("Uneti strane koje zelite da zadrzite.String 0 kraj unosa:\n") m = map (lambda x: int(x) - 1, raw_input("Uneti broj stranice:").split())
而不是
while
循环。此外,遍历对象而不是索引。for page_number in m: strana = input1.getPage(page_number) output.addPage(strana)
最后,用
with
封装文件操作。 Python 将自动处理文件的关闭,以免您忘记这样做。with open (pdful, 'wb') as outputStream: output.write(outputStream)