chore(deps): Bump PyPDF2 from 1.26.0 to 2.1.0

* Updated changes in API usages
* changelog: https://github.com/py-pdf/PyPDF2/blob/main/CHANGELOG
This commit is contained in:
Gavin D'souza 2022-06-10 12:08:10 +05:30
parent 3aef47200b
commit ef0a92c849
4 changed files with 16 additions and 16 deletions

View file

@ -3,7 +3,7 @@
import io
import unittest
from PyPDF2 import PdfFileReader
from PyPDF2 import PdfReader
import frappe
import frappe.utils.pdf as pdfgen
@ -42,7 +42,7 @@ class TestPdf(unittest.TestCase):
def test_pdf_encryption(self):
password = "qwe"
pdf = pdfgen.get_pdf(self.html, options={"password": password})
reader = PdfFileReader(io.BytesIO(pdf))
reader = PdfReader(io.BytesIO(pdf))
self.assertTrue(reader.isEncrypted)
self.assertTrue(reader.decrypt(password))

View file

@ -5,10 +5,11 @@ import os
import re
import subprocess
from distutils.version import LooseVersion
from typing import Optional
import pdfkit
from bs4 import BeautifulSoup
from PyPDF2 import PdfFileReader, PdfFileWriter
from PyPDF2 import PdfReader, PdfWriter
import frappe
from frappe import _
@ -23,7 +24,7 @@ PDF_CONTENT_ERRORS = [
]
def get_pdf(html, options=None, output=None):
def get_pdf(html, options=None, output: Optional[PdfWriter] = None):
html = scrub_urls(html)
html, options = prepare_options(html, options)
@ -37,9 +38,8 @@ def get_pdf(html, options=None, output=None):
# Set filename property to false, so no file is actually created
filedata = pdfkit.from_string(html, options=options or {}, verbose=True)
# https://pythonhosted.org/PyPDF2/PdfFileReader.html
# create in-memory binary streams from filedata and create a PdfFileReader object
reader = PdfFileReader(io.BytesIO(filedata))
# create in-memory binary streams from filedata and create a PdfReader object
reader = PdfReader(io.BytesIO(filedata))
except OSError as e:
if any([error in str(e) for error in PDF_CONTENT_ERRORS]):
if not filedata:
@ -47,8 +47,8 @@ def get_pdf(html, options=None, output=None):
frappe.throw(_("PDF generation failed because of broken image links"))
# allow pdfs with missing images if file got created
if output: # output is a PdfFileWriter object
output.appendPagesFromReader(reader)
if output:
output.append_pages_from_reader(reader)
else:
raise
finally:
@ -58,11 +58,11 @@ def get_pdf(html, options=None, output=None):
password = options["password"]
if output:
output.appendPagesFromReader(reader)
output.append_pages_from_reader(reader)
return output
writer = PdfFileWriter()
writer.appendPagesFromReader(reader)
writer = PdfWriter()
writer.append_pages_from_reader(reader)
if "password" in options:
writer.encrypt(password)

View file

@ -1,6 +1,6 @@
import os
from PyPDF2 import PdfFileWriter
from PyPDF2 import PdfWriter
import frappe
from frappe import _
@ -58,7 +58,7 @@ def download_multi_pdf(doctype, name, format=None, no_letterhead=False, options=
import json
output = PdfFileWriter()
output = PdfWriter()
if isinstance(options, str):
options = json.loads(options)
@ -152,7 +152,7 @@ def print_by_server(
cups.setServer(print_settings.server_ip)
cups.setPort(print_settings.port)
conn = cups.Connection()
output = PdfFileWriter()
output = PdfWriter()
output = frappe.get_print(
doctype, name, print_format, doc=doc, no_letterhead=no_letterhead, as_pdf=True, output=output
)

View file

@ -43,7 +43,7 @@ PyJWT~=2.0.1
PyMySQL~=1.0.2
pyOpenSSL~=20.0.1
pyotp~=2.6.0
PyPDF2~=1.26.0
PyPDF2~=2.1.0
PyPika~=0.48.9
pypng~=0.0.20
PyQRCode~=1.2.1