Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 23 additions & 23 deletions staplelib/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
import os

try:
from PyPDF2 import PdfFileWriter, PdfFileReader
from PyPDF2 import PdfWriter, PdfReader
except:
from pyPdf import PdfFileWriter, PdfFileReader
from pyPdf import PdfWriter, PdfReader

from . import CommandError, iohelper
import staplelib
Expand All @@ -33,7 +33,7 @@ def select(args, inverse=False):
if not filesandranges or not outputfilename:
raise CommandError("Both input and output filenames are required.")

output = PdfFileWriter()
output = PdfWriter()
try:
for input in filesandranges:
pdf = input['pdf']
Expand All @@ -44,21 +44,21 @@ def select(args, inverse=False):
if not inverse:
pagerange = input['pages'] or [
(p, iohelper.ROTATION_NONE) for p in
range(1, pdf.getNumPages() + 1)]
range(1, len(pdf.pages) + 1)]
else:
excluded = [p for p, r in input['pages']]
pagerange = [(p, iohelper.ROTATION_NONE) for p in
range(1, pdf.getNumPages() + 1) if
range(1, len(pdf.pages) + 1) if
p not in excluded]

for pageno, rotate in pagerange:
if 1 <= pageno <= pdf.getNumPages():
if 1 <= pageno <= len(pdf.pages):
if verbose:
print("Using page: {} (rotation: {} deg.)".format(
pageno, rotate))

output.addPage(pdf.getPage(pageno-1)
.rotateClockwise(rotate))
output.add_page(pdf.pages[pageno-1]
.rotate(rotate))
else:
raise CommandError("Page {} not found in {}.".format(
pageno, input['name']))
Expand Down Expand Up @@ -98,14 +98,14 @@ def split(args):
base,
'_',
'%0',
str(math.ceil(math.log10(input.getNumPages()))),
str(math.ceil(math.log10(len(input.pages)))),
'd',
ext
])

for pageno in range(input.getNumPages()):
output = PdfFileWriter()
output.addPage(input.getPage(pageno))
for pageno in range(len(input.pages)):
output = PdfWriter()
output.add_page(input.pages[pageno])

outputname = output_template % (pageno + 1)
if verbose:
Expand Down Expand Up @@ -150,17 +150,17 @@ def zip_pdf_pages(filesandranges, verbose):
# empty range means "include all pages"
pagerange = input['pages'] or [
(p, iohelper.ROTATION_NONE) for p in
range(1, pdf.getNumPages() + 1)]
range(1, len(pdf.pages) + 1)]

pagestozip = []
for pageno, rotate in pagerange:
if 1 <= pageno <= pdf.getNumPages():
if 1 <= pageno <= len(pdf.pages):
if verbose:
print("Using page: {} (rotation: {} deg.)".format(
pageno, rotate))

pagestozip.append(pdf.getPage(pageno-1)
.rotateClockwise(rotate))
pagestozip.append(pdf.pages[pageno-1]
.rotate(rotate))
else:
raise CommandError("Page {} not found in {}.".format(
pageno, input['name']))
Expand All @@ -181,7 +181,7 @@ def background(args):
try:
filestozip = zip_pdf_pages(filesandranges, verbose)

output = PdfFileWriter()
output = PdfWriter()
for pageno in range(max(map(len, filestozip))):
page = None
for listno in range(len(filestozip)):
Expand All @@ -190,8 +190,8 @@ def background(args):
if not page:
page = p
else:
page.mergePage(p)
output.addPage(page)
page.merge_page(p)
output.add_page(page)

except Exception as e:
import sys
Expand All @@ -213,11 +213,11 @@ def zip(args):
filestozip = zip_pdf_pages(filesandranges, verbose)

# Interweave pages.
output = PdfFileWriter()
output = PdfWriter()
for pageno in range(max(map(len, filestozip))):
for listno in range(len(filestozip)):
if pageno < len(filestozip[listno]):
output.addPage(filestozip[listno][pageno])
output.add_page(filestozip[listno][pageno])

_write_output(output, outputfilename)

Expand Down Expand Up @@ -266,7 +266,7 @@ def pdf_page_enumeration(pdf):
pagelabels = pdf.trailer["/Root"]["/PageLabels"]
except:
# ("No /Root/PageLabels object"), so infer the list.
return range(1, pdf.getNumPages() + 1)
return range(1, len(pdf.pages) + 1)

# """Select the item that is most likely to contain the information you desire; e.g.
# {'/Nums': [0, IndirectObject(42, 0)]}
Expand All @@ -292,7 +292,7 @@ def pdf_page_enumeration(pdf):
style = '/D'
prefix = ''
next_pageno = 1
for i in range(0, pdf.getNumPages()):
for i in range(0, len(pdf.pages)):
if len(pagelabels_nums_list) > 0 and i >= pagelabels_nums_list[0]:
pagelabels_nums_list.pop(0) # discard index
pnle = pagelabels_nums_list.pop(0)
Expand Down
12 changes: 6 additions & 6 deletions staplelib/iohelper.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
import sys

try:
from PyPDF2 import PdfFileWriter, PdfFileReader
from PyPDF2 import PdfWriter, PdfReader
except ImportError:
from pyPdf import PdfFileWriter, PdfFileReader
from pyPdf import PdfWriter, PdfReader


from . import CommandError
Expand All @@ -31,8 +31,8 @@ def read_pdf(filename):
"""Open a PDF file with PyPDF2."""
if not os.path.exists(filename):
raise CommandError("{} does not exist".format(filename))
pdf = PdfFileReader(open(filename, "rb"))
if pdf.isEncrypted:
pdf = PdfReader(open(filename, "rb"))
if pdf.is_encrypted:
while True:
pw = prompt_for_pw(filename)
matched = pdf.decrypt(pw)
Expand All @@ -46,7 +46,7 @@ def read_pdf(filename):
def write_pdf(pdf, filename):
force = staplelib.OPTIONS.force

"""Write the content of a PdfFileWriter object to a file."""
"""Write the content of a PdfWriter object to a file."""
if os.path.exists(filename) and not force:
raise CommandError("File already exists: {}".format(filename))

Expand Down Expand Up @@ -123,7 +123,7 @@ def parse_ranges(handles_files_and_ranges):
"page range '{}'".format(handle_key, inputname))

current = operations[-1]
max_page = current['pdf'].getNumPages()
max_page = len(current['pdf'].pages)
# allow "end" as alias for the last page
replace_end = lambda page: (
max_page if page.lower() == 'end' else int(page))
Expand Down
34 changes: 17 additions & 17 deletions staplelib/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import tempfile
import unittest

from PyPDF2.pdf import PdfFileReader
from PyPDF2.pdf import PdfReader

from staplelib import main, CommandError

Expand Down Expand Up @@ -38,40 +38,40 @@ def test_cat(self):
self.outputfile])
self.assertTrue(os.path.isfile(self.outputfile))
with open(self.outputfile, 'rb') as outputfile:
pdf = PdfFileReader(outputfile)
self.assertEqual(pdf.getNumPages(), 6)
pdf = PdfReader(outputfile)
self.assertEqual(len(pdf.pages), 6)

def test_sel_one_page(self):
"""Test select of a one page from a PDF file."""
run_stapler(['sel', 'A=' + FIVEPAGE_PDF, 'A2', self.outputfile])
self.assertTrue(os.path.isfile(self.outputfile))
with open(self.outputfile, 'rb') as outputfile:
pdf = PdfFileReader(outputfile)
self.assertEqual(pdf.getNumPages(), 1)
pdf = PdfReader(outputfile)
self.assertEqual(len(pdf.pages), 1)

def test_sel_range(self):
"""Test select of more pages from a PDF file."""
run_stapler(['cat', 'A=' + FIVEPAGE_PDF, 'A2-4', self.outputfile])
self.assertTrue(os.path.isfile(self.outputfile))
with open(self.outputfile, 'rb') as outputfile:
pdf = PdfFileReader(outputfile)
self.assertEqual(pdf.getNumPages(), 3)
pdf = PdfReader(outputfile)
self.assertEqual(len(pdf.pages), 3)

def test_del_one_page(self):
"""Test del command for inverse select of one page."""
run_stapler(['del', 'A=' + FIVEPAGE_PDF, 'A1', self.outputfile])
self.assertTrue(os.path.isfile(self.outputfile))
with open(self.outputfile, 'rb') as outputfile:
pdf = PdfFileReader(outputfile)
self.assertEqual(pdf.getNumPages(), 4)
pdf = PdfReader(outputfile)
self.assertEqual(len(pdf.pages), 4)

def test_del_range(self):
"""Test del command for inverse select multiple pages."""
run_stapler(['del', 'A=' + FIVEPAGE_PDF, 'A2-4', self.outputfile])
self.assertTrue(os.path.isfile(self.outputfile))
with open(self.outputfile, 'rb') as outputfile:
pdf = PdfFileReader(outputfile)
self.assertEqual(pdf.getNumPages(), 2)
pdf = PdfReader(outputfile)
self.assertEqual(len(pdf.pages), 2)

def test_split(self):
"""Make sure a file is properly split into pages."""
Expand All @@ -81,24 +81,24 @@ def test_split(self):
self.assertEqual(len(filelist), 5)
for f in os.listdir(self.tmpdir):
with open(os.path.join(self.tmpdir, f), 'rb') as pdf_file:
pdf = PdfFileReader(pdf_file)
self.assertEqual(pdf.getNumPages(), 1)
pdf = PdfReader(pdf_file)
self.assertEqual(len(pdf.pages), 1)

def test_background(self):
"""Test background."""
run_stapler(['background', ONEPAGE_PDF, FIVEPAGE_PDF, self.outputfile])
self.assertTrue(os.path.isfile(self.outputfile))
with open(self.outputfile, 'rb') as outputfile:
pdf = PdfFileReader(outputfile)
self.assertEqual(pdf.getNumPages(), 5)
pdf = PdfReader(outputfile)
self.assertEqual(len(pdf.pages), 5)

def test_zip(self):
"""Test zip."""
run_stapler(['zip', ONEPAGE_PDF, FIVEPAGE_PDF, self.outputfile])
self.assertTrue(os.path.isfile(self.outputfile))
with open(self.outputfile, 'rb') as outputfile:
pdf = PdfFileReader(outputfile)
self.assertEqual(pdf.getNumPages(), 6)
pdf = PdfReader(outputfile)
self.assertEqual(len(pdf.pages), 6)

def test_output_file_already_exists(self):
"""Test zip."""
Expand Down