1
0
Fork 0

Merging upstream version 0.9.0.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-08 08:01:00 +01:00
parent 768d0cd35e
commit 91745cfec8
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
6 changed files with 215 additions and 12 deletions

View file

@ -179,3 +179,87 @@ Display text
with open('document.pdf', 'wb') as f:
document.write(f)
Add metadata
------------
.. code-block:: python
import datetime
import pydyf
document = pydyf.PDF()
document.info['Author'] = pydyf.String('Jane Doe')
document.info['Creator'] = pydyf.String('pydyf')
document.info['Keywords'] = pydyf.String('some keywords')
document.info['Producer'] = pydyf.String('The producer')
document.info['Subject'] = pydyf.String('An example PDF')
document.info['Title'] = pydyf.String('A PDF containing metadata')
now = datetime.datetime.now()
document.info['CreationDate'] = pydyf.String(now.strftime('D:%Y%m%d%H%M%S'))
document.add_page(
pydyf.Dictionary(
{
'Type': '/Page',
'Parent': document.pages.reference,
'MediaBox': pydyf.Array([0, 0, 200, 200]),
}
)
)
# 550 bytes PDF
with open('metadata.pdf', 'wb') as f:
document.write(f)
Display inline QR-code image
----------------------------
.. code-block:: python
import pydyf
import qrcode
# Create a QR code image
image = qrcode.make('Some data here')
raw_data = image.tobytes()
width = image.size[0]
height = image.size[1]
document = pydyf.PDF()
stream = pydyf.Stream(compress=True)
stream.push_state()
x = 0
y = 0
stream.transform(width, 0, 0, height, x, y)
# Add the 1-bit grayscale image inline in the PDF
stream.inline_image(width, height, 'Gray', 1, raw_data)
stream.pop_state()
document.add_object(stream)
# Put the image in the resources of the PDF
document.add_page(
pydyf.Dictionary(
{
'Type': '/Page',
'Parent': document.pages.reference,
'MediaBox': pydyf.Array([0, 0, 400, 400]),
'Resources': pydyf.Dictionary(
{
'ProcSet': pydyf.Array(
['/PDF', '/ImageB', '/ImageC', '/ImageI']
),
}
),
'Contents': stream.reference,
}
)
)
# 909 bytes PDF
with open('qrcode.pdf', 'wb') as f:
document.write(f, compress=True)