Skip to content

Releases: py-pdf/pypdf

Version 1.28.1, 2022-05-22

22 May 19:54
1.28.1
000ac49
Compare
Choose a tag to compare

What's Changed

Bug Fixes (BUG)

  • Incorrectly show deprecation warnings on internal usage (#887)

Maintenance (MAINT)

  • Add stacklevel=2 to deprecation warnings (#889)
  • Remove duplicate warnings imports (#888)

Full Changelog: 1.28.0...1.28.1

Version 1.28.0, 2022-05-22

22 May 15:29
1.28.0
a214c9e
Compare
Choose a tag to compare

Version 1.28.0, 2022-05-22

This release adds a lot of deprecation warnings in preparation of the
PyPDF2 2.0.0 release. The changes are mostly using snake_case function-, method-,
and variable-names as well as using properties instead of getter-methods.

Maintenance (MAINT):

  • Remove IronPython Fallback for zlib (#868)

Full Changelog: 1.27.12...1.27.13

Deprecations (DEP)

  • Make the PyPDF2.utils module private
  • Rename of core classes:
    • PdfFileReader ➔ PdfReader
    • PdfFileWriter ➔ PdfWriter
    • PdfFileMerger ➔ PdfMerger
  • Use PEP8 conventions for function names and parameters
  • If a property and a getter-method are both present, use the property

Details

In many places:

  • getObject ➔ get_object
  • writeToStream ➔ write_to_stream
  • readFromStream ➔ read_from_stream

PyPDF2.generic

  • readObject ➔ read_object
  • convertToInt ➔ convert_to_int
  • DocumentInformation.getText ➔ DocumentInformation._get_text :
    This method should typically not be used; please let me know if you need it.

PdfReader class:

  • reader.getPage(pageNumber)reader.pages[page_number]
  • reader.getNumPages() / reader.numPageslen(reader.pages)
  • getDocumentInfo ➔ metadata
  • flattenedPages attribute ➔ flattened_pages
  • resolvedObjects attribute ➔ resolved_objects
  • xrefIndex attribute ➔ xref_index
  • getNamedDestinations / namedDestinations attribute ➔ named_destinations
  • getPageLayout / pageLayout ➔ page_layout attribute
  • getPageMode / pageMode ➔ page_mode attribute
  • getIsEncrypted / isEncrypted ➔ is_encrypted attribute
  • getOutlines ➔ get_outlines
  • readObjectHeader ➔ read_object_header (TODO: read vs get?)
  • cacheGetIndirectObject ➔ cache_get_indirect_object (TODO: public vs private?)
  • cacheIndirectObject ➔ cache_indirect_object (TODO: public vs private?)
  • getDestinationPageNumber ➔ get_destination_page_number
  • readNextEndLine ➔ read_next_end_line
  • _zeroXref ➔ _zero_xref
  • _authenticateUserPassword ➔ _authenticate_user_password
  • _pageId2Num attribute ➔ _page_id2num
  • _buildDestination ➔ _build_destination
  • _buildOutline ➔ _build_outline
  • _getPageNumberByIndirect(indirectRef) ➔ _get_page_number_by_indirect(indirect_ref)
  • _getObjectFromStream ➔ _get_object_from_stream
  • _decryptObject ➔ _decrypt_object
  • _flatten(..., indirectRef) ➔ _flatten(..., indirect_ref)
  • _buildField ➔ _build_field
  • _checkKids ➔ _check_kids
  • _writeField ➔ _write_field
  • _write_field(..., fieldAttributes) ➔ _write_field(..., field_attributes)
  • _read_xref_subsections(..., getEntry, ...) ➔ _read_xref_subsections(..., get_entry, ...)

PdfWriter class:

  • writer.getPage(pageNumber)writer.pages[page_number]
  • writer.getNumPages()len(writer.pages)
  • addMetadata ➔ add_metadata
  • addPage ➔ add_page
  • addBlankPage ➔ add_blank_page
  • addAttachment(fname, fdata) ➔ add_attachment(filename, data)
  • insertPage ➔ insert_page
  • insertBlankPage ➔ insert_blank_page
  • appendPagesFromReader ➔ append_pages_from_reader
  • updatePageFormFieldValues ➔ update_page_form_field_values
  • cloneReaderDocumentRoot ➔ clone_reader_document_root
  • cloneDocumentFromReader ➔ clone_document_from_reader
  • getReference ➔ get_reference
  • getOutlineRoot ➔ get_outline_root
  • getNamedDestRoot ➔ get_named_dest_root
  • addBookmarkDestination ➔ add_bookmark_destination
  • addBookmarkDict ➔ add_bookmark_dict
  • addBookmark ➔ add_bookmark
  • addNamedDestinationObject ➔ add_named_destination_object
  • addNamedDestination ➔ add_named_destination
  • removeLinks ➔ remove_links
  • removeImages(ignoreByteStringObject) ➔ remove_images(ignore_byte_string_object)
  • removeText(ignoreByteStringObject) ➔ remove_text(ignore_byte_string_object)
  • addURI ➔ add_uri
  • addLink ➔ add_link
  • getPage(pageNumber) ➔ get_page(page_number)
  • getPageLayout / setPageLayout / pageLayout ➔ page_layout attribute
  • getPageMode / setPageMode / pageMode ➔ page_mode attribute
  • _addObject ➔ _add_object
  • _addPage ➔ _add_page
  • _sweepIndirectReferences ➔ _sweep_indirect_references

PdfMerger class

  • __init__ parameter: strict=True ➔ strict=False (the PdfFileMerger still has the old default)
  • addMetadata ➔ add_metadata
  • addNamedDestination ➔ add_named_destination
  • setPageLayout ➔ set_page_layout
  • setPageMode ➔ set_page_mode

Page class:

  • artBox / bleedBox/ cropBox/ mediaBox / trimBox ➔ artbox / bleedbox/ cropbox/ mediabox / trimbox
    • getWidth, getHeight ➔ width / height
    • getLowerLeft_x / getUpperLeft_x ➔ left
    • getUpperRight_x / getLowerRight_x ➔ right
    • getLowerLeft_y / getLowerRight_y ➔ bottom
    • getUpperRight_y / getUpperLeft_y ➔ top
    • getLowerLeft / setLowerLeft ➔ lower_left property
    • upperRight ➔ upper_right
  • mergePage ➔ merge_page
  • rotateClockwise / rotateCounterClockwise ➔ rotate_clockwise
  • _mergeResources ➔ _merge_resources
  • _contentStreamRename ➔ _content_stream_rename
  • _pushPopGS ➔ _push_pop_gs
  • _addTransformationMatrix ➔ _add_transformation_matrix
  • _mergePage ➔ _merge_page

XmpInformation class:

  • getElement(..., aboutUri, ...) ➔ get_element(..., about_uri, ...)
  • getNodesInNamespace(..., aboutUri, ...) ➔ get_nodes_in_namespace(..., aboutUri, ...)
  • _getText ➔ _get_text

utils.py:

  • matrixMultiply ➔ matrix_multiply
  • RC4_encrypt is moved to the security module

What's Changed

Full Changelog: 1.27.12...1.28.0

Version 1.27.12, 2022-05-02

02 May 19:12
1.27.12
f3cb316
Compare
Choose a tag to compare

What's Changed

Bug Fixes (BUG)

  • _rebuild_xref_table expects trailer to be a dict (#857)

Documentation (DOC)

  • Security Policy

Full Changelog: 1.27.11...1.27.12

Version 1.27.11, 2022-05-02

02 May 06:51
1.27.11
998d5ba
Compare
Choose a tag to compare

What's Changed

Bug Fixes (BUG)

  • Incorrectly issued xref warning/exception (#855)

Full Changelog: 1.27.10...1.27.11

Version 1.27.10, 2022-05-01

01 May 09:17
1.27.10
def7a62
Compare
Choose a tag to compare

What's Changed

Robustness (ROB)

  • Handle missing destinations in reader (#840)
  • warn-only in readStringFromStream (#837)
  • Fix corruption in startxref or xref table (#788 and #830)

Documentation (DOC)

  • Project Governance (#799)
  • History of PyPDF2
  • PDF feature/version support (#816)
  • More details on text parsing issues (#815)

Developer Experience (DEV)

  • Add benchmark command to Makefile
  • Ignore IronPython parts for code coverage (#826)

Maintenance (MAINT)

  • Split pdf module (#836)
  • Separated CCITTFax param parsing/decoding (#841)
  • Update requirements files

Testing (TST)

  • Use external repository for larger/more PDFs for testing (#820)
  • Swap incorrect test names (#838)
  • Add test for PdfFileReader and page properties (#835)
  • Add tests for PyPDF2.generic (#831)
  • Add tests for utils, form fields, PageRange (#827)
  • Add test for ASCII85Decode (#825)
  • Add test for FlateDecode (#823)
  • Add test for filters.ASCIIHexDecode (#822)

Code Style (STY)

  • Apply pre-commit (black, isort) + use snake_case variables (#832)
  • Remove debug code (#828)
  • Documentation, Variable names (#839)

New Contributors

Full Changelog: 1.27.9...1.27.10

Version 1.27.9, 2022-04-24

24 Apr 13:34
1.27.9
22033d7
Compare
Choose a tag to compare

What's Changed

A change I would like to highlight is the performance improvement for large PDF files (#808 by @dsk7) 🎉

New Features (ENH)

  • Add papersizes (#800)
  • Allow setting permission flags when encrypting (#803)
  • Allow setting form field flags (#802)

Bug Fixes (BUG)

  • TypeError in xmp._converter_date (#813)
  • Improve spacing for text extraction (#806)
  • Fix PDFDocEncoding Character Set (#809)

Robustness (ROB)

  • Use null ID when encrypted but no ID given (#812)
  • Handle recursion error (#804)

Documentation (DOC)

  • CMaps (#811)
  • The PDF Format + commit prefixes (#810)
  • Add compression example (#792)

Developer Experience (DEV)

  • Add Benchmark for Performance Testing (#781)

Maintenance (MAINT)

  • Validate PDF magic byte in strict mode (#814)
  • Make PdfFileMerger.addBookmark() behave life PdfFileWriters' (#339)
  • Quadratic runtime while parsing reduced to linear (#808)

Testing (TST)

  • Newlines in text extraction (#807)

New Contributors

Full Changelog: 1.27.8...1.27.9

Version 1.27.8, 2022-04-21

21 Apr 16:16
1.27.8
2f01f77
Compare
Choose a tag to compare

What's Changed

Bug Fixes (BUG)

  • Use 1MB as offset for readNextEndLine (#321)
  • 'PdfFileWriter' object has no attribute 'stream' (#787)

Robustness (ROB)

  • Invalid float object; use 0 as fallback (#782)

Documentation (DOC)

New Contributors

Full Changelog: 1.27.7...1.27.8

Version 1.27.7, 2022-04-19

19 Apr 12:18
1.27.7
4c78b54
Compare
Choose a tag to compare

What's Changed

Bug Fixes (BUG)

  • Import exceptions from PyPDF2.errors in PyPDF2.utils (#780)

Code Style (STY)

  • Naming in 'make_changelog.py'

Full Changelog: 1.27.6...1.27.7

Version 1.27.6, 2022-04-18

18 Apr 09:01
1.27.6
13e7cb3
Compare
Choose a tag to compare

What changed

Deprecations (DEP)

  • Remove support for Python 2.6 and older (#776)

New Features (ENH)

  • Extract document permissions (#320)

Bug Fixes (BUG)

  • Clip by trimBox when merging pages, which would otherwise be ignored (#240)
  • Add overwriteWarnings parameter PdfFileMerger (#243)
  • IndexError for getPage() of decryped file (#359)
  • Handle cases where decodeParms is an ArrayObject (#405)
  • Updated PDF fields don't show up when page is written (#412)
  • Set Linked Form Value (#414)
  • Fix zlib -5 error for corrupt files (#603)
  • Fix reading more than last1K for EOF (#642)
  • Acciental import

Robustness (ROB)

  • Allow extra whitespace before "obj" in readObjectHeader (#567)

Documentation (DOC)

  • Link to pdftoc in Sample_Code (#628)
  • Working with annotations (#764)
  • Structure history

Developer Experience (DEV)

  • Add issue templates (#765)
  • Add tool to generate changelog

Maintenance (MAINT)

  • Use grouped constants instead of string literals (#745)
  • Add error module (#768)
  • Use decorators for @staticmethod (#775)
  • Split long functions (#777)

Testing (TST)

  • Run tests in CI once with -OO Flags (#770)
  • Filling out forms (#771)
  • Add tests for Writer (#772)
  • Error cases (#773)
  • Check Error messages (#769)
  • Regression test for issue #88
  • Regression test for issue #327

Code Style (STY)

  • Make variable naming more consistent in tests

New Contributors

Full Changelog: 1.27.5...1.27.6

Version 1.27.5, 2022-04-15

15 Apr 21:13
1.27.5
733989a
Compare
Choose a tag to compare

Security (SEC)

  • ContentStream_readInlineImage had potential infinite loop (#740)

Bug fixes (BUG)

  • Fix merging encrypted files (#757)
  • CCITTFaxDecode decodeParms can be an ArrayObject (#756)

Robustness improvements (ROBUST)

  • title sometimes None (#744)

Documentation (DOC)

  • Adjust short description of the package

Tests and Test setup (TST)

  • Rewrite JS tests from unittest to pytest (#746)
  • Increase Test coverage, mainly with filters (#756)
  • Add test for inline images (#758)

Developer Experience Improvements (DEV)

  • Remove unused Travis-CI configuration (#747)
  • Show code coverage (#754, #755)
  • Add mutmut (#760)

Miscellaneous

  • STY: Closing file handles, explicit exports, ... (#743)

All changes: 1.27.4...1.27.5