]> git.ipfire.org Git - thirdparty/python-drafthorse.git/commitdiff
Upgrade pypdf lib and fix generation issues (#6)
authorcmcproject <49843191+cmcproject@users.noreply.github.com>
Tue, 2 May 2023 08:07:52 +0000 (11:07 +0300)
committerGitHub <noreply@github.com>
Tue, 2 May 2023 08:07:52 +0000 (10:07 +0200)
drafthorse/__init__.py
drafthorse/pdf.py
requirements_dev.txt
setup.py

index e19cdef60dde5fe15338bb5aa8cf497250316b77..6a86bc70329d83b2a40db1ae2a3474d1fd4a6913 100644 (file)
@@ -1 +1 @@
-version = "2.2.1"
+version = "2.2.2"
index cfe2ee166c8696d6c9d3d76250e04803ee1299c8..75cc6592143261e7583779faedd74ed2d56996ac 100644 (file)
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 import datetime
+import logging
 import os
 from io import BytesIO
 from lxml import etree
-from PyPDF2 import PdfReader, PdfWriter
-from PyPDF2.generic import (
+from pypdf import PdfReader, PdfWriter
+from pypdf.generic import (
     ArrayObject,
     DecodedStreamObject,
     DictionaryObject,
     NameObject,
-    createStringObject,
+    create_string_object,
 )
 
+logger = logging.getLogger("drafthorse")
+
 
 def attach_xml(original_pdf, xml_data, level="BASIC"):
     if not isinstance(original_pdf, bytes):
@@ -71,13 +74,13 @@ def _get_original_output_intents(original_pdf):
         pdf_root = original_pdf.trailer["/Root"]
         ori_output_intents = pdf_root["/OutputIntents"]
         for ori_output_intent in ori_output_intents:
-            ori_output_intent_dict = ori_output_intent.getObject()
+            ori_output_intent_dict = ori_output_intent.get_object()
             dest_output_profile_dict = ori_output_intent_dict[
                 "/DestOutputProfile"
-            ].getObject()
+            ].get_object()
             output_intents.append((ori_output_intent_dict, dest_output_profile_dict))
-    except:  # noqa
-        pass
+    except Exception as ex:
+        logger.error(ex)
     return output_intents
 
 
@@ -138,7 +141,7 @@ def _prepare_pdf_metadata_xml(level, pdf_metadata):
     desc_adobe = etree.SubElement(rdf, ns_rdf + "Description", nsmap=nsmap_pdf)
     desc_adobe.set(ns_rdf + "about", "")
     producer = etree.SubElement(desc_adobe, ns_pdf + "Producer")
-    producer.text = "PyPDF2"
+    producer.text = "pypdf"
     desc_xmp = etree.SubElement(rdf, ns_rdf + "Description", nsmap=nsmap_xmp)
     desc_xmp.set(ns_rdf + "about", "")
     creator = etree.SubElement(desc_xmp, ns_xmp + "CreatorTool")
@@ -192,14 +195,14 @@ def _facturx_update_metadata_add_attachment(
     pdf_filestream, facturx_xml_str, pdf_metadata, facturx_level, output_intents
 ):
     # md5sum = hashlib.md5(facturx_xml_str).hexdigest()
-    # md5sum_obj = createStringObject(md5sum)
+    # md5sum_obj = create_string_object(md5sum)
     pdf_date = datetime.datetime.utcnow().strftime("D:%Y%m%d%H%M%SZ")
     params_dict = DictionaryObject(
         {
             # NameObject('/CheckSum'): md5sum_obj,
-            NameObject("/ModDate"): createStringObject(pdf_date),
-            NameObject("/CreationDate"): createStringObject(pdf_date),
-            NameObject("/Size"): NameObject(str(len(facturx_xml_str))),
+            NameObject("/ModDate"): create_string_object(pdf_date),
+            NameObject("/CreationDate"): create_string_object(pdf_date),
+            NameObject("/Size"): create_string_object(str(len(facturx_xml_str))),
         }
     )
     file_entry = DecodedStreamObject()
@@ -218,13 +221,13 @@ def _facturx_update_metadata_add_attachment(
         {NameObject("/F"): file_entry_obj, NameObject("/UF"): file_entry_obj}
     )
 
-    fname_obj = createStringObject("factur-x.xml")
+    fname_obj = create_string_object("factur-x.xml")
     filespec_dict = DictionaryObject(
         {
             NameObject("/AFRelationship"): NameObject(
                 "/Data" if facturx_level in ("BASIC-WL", "MINIMUM") else "/Alternative"
             ),
-            NameObject("/Desc"): createStringObject(
+            NameObject("/Desc"): create_string_object(
                 "Invoice metadata conforming to ZUGFeRD standard (http://www.ferd-net.de/front_content.php?idcat=231&lang=4)"
             ),
             NameObject("/Type"): NameObject("/Filespec"),
@@ -240,7 +243,7 @@ def _facturx_update_metadata_add_attachment(
     )
     name_arrayobj_content_final = []
     af_list = []
-    for (fname_obj, filespec_obj) in name_arrayobj_content_sort:
+    for fname_obj, filespec_obj in name_arrayobj_content_sort:
         name_arrayobj_content_final += [fname_obj, filespec_obj]
         af_list.append(filespec_obj)
     embedded_files_names_dict = DictionaryObject(
index 330297acdc593b636666d3378450317e59316bea..ec0c2890012d645d5672c1431307f5dc2ff7fc9a 100644 (file)
@@ -1,5 +1,5 @@
 lxml
-PyPDF2
+pypdf
 pytest
 flake8
 isort
index 200176af5c5dbc1482e6eecffad39ef6543faae5..3434eaf65f8afc9be7a99717b5ccacf926bea08d 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -33,7 +33,7 @@ setup(
         "Programming Language :: Python :: 3.10",
     ],
     keywords="xml banking sepa",
-    install_requires=["lxml", "PyPDF2"],
+    install_requires=["lxml", "pypdf"],
     packages=find_packages(include=["drafthorse", "drafthorse.*"]),
     include_package_data=True,
 )