PDF comes in the following versions:
- 1993: 1.0
- 1994: 1.1
- 1996: 1.2
- 1999: 1.3
- 2001: 1.4
- 2003: 1.5
- 2004: 1.6
- 2006 - 2012: 1.7, ISO 32000-1:2008
- 2017: 2.0
The general format didn't change, but new features got added. It can be that pypdf can do the operations you want on PDF 2.0 files without fully supporting all features of PDF 2.0.
Feature | PDF-Version | pypdf Support |
---|---|---|
Transparent Graphics | 1.4 | ? |
CMaps | 1.4 | ✅ |
Object Streams | 1.5 | ? |
Cross-reference Streams | 1.5 | ? |
Optional Content Groups (OCGs) - Layers | 1.5 | ? |
Content Stream Compression | 1.5 | ? |
AES Encryption | 1.6 | ✅ |
See History of PDF for more features.
Some PDF features are not supported by pypdf, but other libraries can be used for them:
- pyHanko: Cryptographically sign a PDF (#302)
- camelot-py: Table Extraction (#231)