change from pypdf2 to pypdf (#2666)

# Description

addition to #2636

## Checklist

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have performed a self-review of my own code
- [ ] I have attached images of the change if it is UI based
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] If my code has heavily changed functionality I have updated
relevant docs on [Stirling-PDFs doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
- [x] My changes generate no new warnings
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)
This commit is contained in:
Ludy 2025-01-11 22:06:46 +01:00 committed by GitHub
parent cce4693aea
commit b2da426cc1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 22 additions and 18 deletions

View File

@ -8,4 +8,3 @@
</body> </body>
</html> </html>

View File

@ -18,4 +18,4 @@ def after_scenario(context, scenario):
# Remove any temporary files # Remove any temporary files
for temp_file in os.listdir('.'): for temp_file in os.listdir('.'):
if temp_file.startswith('genericNonCustomisableName') or temp_file.startswith('temp_image_'): if temp_file.startswith('genericNonCustomisableName') or temp_file.startswith('temp_image_'):
os.remove(temp_file) os.remove(temp_file)

View File

@ -1,7 +1,8 @@
import os import os
import requests import requests
from behave import given, when, then from behave import given, when, then
from PyPDF2 import PdfWriter, PdfReader from pypdf import PdfWriter, PdfReader
from pypdf.errors import PdfReadError
import io import io
import random import random
import string import string
@ -42,7 +43,7 @@ def step_use_example_file(context, filePath, fileInput):
context.file_name = filePath.split('/')[-1] context.file_name = filePath.split('/')[-1]
if not hasattr(context, 'files'): if not hasattr(context, 'files'):
context.files = {} context.files = {}
# Ensure the file exists before opening # Ensure the file exists before opening
try: try:
example_file = open(filePath, 'rb') example_file = open(filePath, 'rb')
@ -165,17 +166,17 @@ def step_pdf_contains_pages_with_random_text(context, page_count):
buffer = io.BytesIO() buffer = io.BytesIO()
c = canvas.Canvas(buffer, pagesize=letter) c = canvas.Canvas(buffer, pagesize=letter)
width, height = letter width, height = letter
for _ in range(page_count): for _ in range(page_count):
text = ''.join(random.choices(string.ascii_letters + string.digits, k=100)) text = ''.join(random.choices(string.ascii_letters + string.digits, k=100))
c.drawString(100, height - 100, text) c.drawString(100, height - 100, text)
c.showPage() c.showPage()
c.save() c.save()
with open(context.file_name, 'wb') as f: with open(context.file_name, 'wb') as f:
f.write(buffer.getvalue()) f.write(buffer.getvalue())
context.files[context.param_name].close() context.files[context.param_name].close()
context.files[context.param_name] = open(context.file_name, 'rb') context.files[context.param_name] = open(context.file_name, 'rb')
@ -184,16 +185,16 @@ def step_pdf_pages_contain_text(context, text):
buffer = io.BytesIO() buffer = io.BytesIO()
c = canvas.Canvas(buffer, pagesize=letter) c = canvas.Canvas(buffer, pagesize=letter)
width, height = letter width, height = letter
for _ in range(len(PdfReader(context.file_name).pages)): for _ in range(len(PdfReader(context.file_name).pages)):
c.drawString(100, height - 100, text) c.drawString(100, height - 100, text)
c.showPage() c.showPage()
c.save() c.save()
with open(context.file_name, 'wb') as f: with open(context.file_name, 'wb') as f:
f.write(buffer.getvalue()) f.write(buffer.getvalue())
context.files[context.param_name].close() context.files[context.param_name].close()
context.files[context.param_name] = open(context.file_name, 'rb') context.files[context.param_name] = open(context.file_name, 'rb')
@ -345,7 +346,7 @@ def step_check_response_pdf_page_count(context, page_count):
def step_check_response_zip_file_count(context, file_count): def step_check_response_zip_file_count(context, file_count):
response_file = io.BytesIO(context.response.content) response_file = io.BytesIO(context.response.content)
with zipfile.ZipFile(io.BytesIO(response_file.getvalue())) as zip_file: with zipfile.ZipFile(io.BytesIO(response_file.getvalue())) as zip_file:
actual_file_count = len(zip_file.namelist()) actual_file_count = len(zip_file.namelist())
assert actual_file_count == file_count, f"Expected {file_count} files but got {actual_file_count} files" assert actual_file_count == file_count, f"Expected {file_count} files but got {actual_file_count} files"
@then('the response ZIP file should contain {doc_count:d} documents each having {pages_per_doc:d} pages') @then('the response ZIP file should contain {doc_count:d} documents each having {pages_per_doc:d} pages')
@ -354,7 +355,7 @@ def step_check_response_zip_doc_page_count(context, doc_count, pages_per_doc):
with zipfile.ZipFile(io.BytesIO(response_file.getvalue())) as zip_file: with zipfile.ZipFile(io.BytesIO(response_file.getvalue())) as zip_file:
actual_doc_count = len(zip_file.namelist()) actual_doc_count = len(zip_file.namelist())
assert actual_doc_count == doc_count, f"Expected {doc_count} documents but got {actual_doc_count} documents" assert actual_doc_count == doc_count, f"Expected {doc_count} documents but got {actual_doc_count} documents"
for file_name in zip_file.namelist(): for file_name in zip_file.namelist():
with zip_file.open(file_name) as pdf_file: with zip_file.open(file_name) as pdf_file:
reader = PdfReader(pdf_file) reader = PdfReader(pdf_file)

View File

@ -1,5 +1,5 @@
behave behave
requests requests
PyPDF2 pypdf
reportlab reportlab
PyCryptodome PyCryptodome

View File

@ -231,9 +231,9 @@ pycryptodome==3.21.0 \
--hash=sha256:f7787e0d469bdae763b876174cf2e6c0f7be79808af26b1da96f1a64bcf47297 \ --hash=sha256:f7787e0d469bdae763b876174cf2e6c0f7be79808af26b1da96f1a64bcf47297 \
--hash=sha256:ff99f952db3db2fbe98a0b355175f93ec334ba3d01bbde25ad3a5a33abc02b58 --hash=sha256:ff99f952db3db2fbe98a0b355175f93ec334ba3d01bbde25ad3a5a33abc02b58
# via -r cucumber\requirements.in # via -r cucumber\requirements.in
pypdf2==3.0.1 \ pypdf==5.1.0 \
--hash=sha256:a74408f69ba6271f71b9352ef4ed03dc53a31aa404d29b5d31f53bfecfee1440 \ --hash=sha256:3bd4f503f4ebc58bae40d81e81a9176c400cbbac2ba2d877367595fb524dfdfc \
--hash=sha256:d16e4205cfee272fbdc0568b68d82be796540b1537508cef59388f839c191928 --hash=sha256:425a129abb1614183fd1aca6982f650b47f8026867c0ce7c4b9f281c443d2740
# via -r cucumber\requirements.in # via -r cucumber\requirements.in
reportlab==4.2.5 \ reportlab==4.2.5 \
--hash=sha256:5cf35b8fd609b68080ac7bbb0ae1e376104f7d5f7b2d3914c7adc63f2593941f \ --hash=sha256:5cf35b8fd609b68080ac7bbb0ae1e376104f7d5f7b2d3914c7adc63f2593941f \
@ -249,6 +249,10 @@ six==1.17.0 \
# via # via
# behave # behave
# parse-type # parse-type
typing-extensions==4.12.2 \
--hash=sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d \
--hash=sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8
# via pypdf
urllib3==2.3.0 \ urllib3==2.3.0 \
--hash=sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df \ --hash=sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df \
--hash=sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d --hash=sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d