Compare commits

...

2 commits

Author SHA1 Message Date
85efd9a80a Fix format of PDF and XMP timezone offsets
The way to specify timezone offsets differs between the PDF and XMP
specs, so hardcode the UTC offset instead of using `%z`. This also
avoids the possibility of embedding the more more granular timezones
supported by the datetime module but that are unsupported by either PDF
or XMP formats.
2023-06-10 17:28:02 -07:00
9c3753ed2b Convert manual creation/mod times to UTC as well
In line with the previous commit for consistency, convert the date
strings from --creationdate and --moddate to UTC as well if a timezone
is specified.
2023-06-10 17:26:13 -07:00

View file

@ -722,7 +722,8 @@ class pdfdoc(object):
self.writer.docinfo = PdfDict(indirect=True)
def datetime_to_pdfdate(dt):
return dt.strftime("%Y%m%d%H%M%S%z")
dt_utc = dt.astimezone(tz=timezone.utc)
return dt_utc.strftime("%Y%m%d%H%M%S+00'00'")
for k in ["Title", "Author", "Creator", "Producer", "Subject"]:
v = locals()[k.lower()]
@ -732,7 +733,7 @@ class pdfdoc(object):
v = PdfString.encode(v)
self.writer.docinfo[getattr(PdfName, k)] = v
now = datetime.now(tz=timezone.utc)
now = datetime.now().astimezone()
for k in ["CreationDate", "ModDate"]:
v = locals()[k.lower()]
if v is None and nodate:
@ -752,7 +753,8 @@ class pdfdoc(object):
)
def datetime_to_xmpdate(dt):
return dt.strftime("%Y-%m-%dT%H:%M:%S%z")
dt_utc = dt.astimezone(tz=timezone.utc)
return dt_utc.strftime("%Y-%m-%dT%H:%M:%S+00:00")
self.xmp = b"""<?xpacket begin='\xef\xbb\xbf' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>