@ -722,7 +722,16 @@ class pdfdoc(object):
self . writer . docinfo = PdfDict ( indirect = True )
def datetime_to_pdfdate ( dt ) :
return dt . strftime ( " % Y % m %d % H % M % S % z " )
time_no_tz = dt . strftime ( " % Y % m %d % H % M % S " )
tz_pdf = " "
# Format for `%z` specifier is [+-]HHMM(SS(\.ffffff)?)?, but the
# PDF format only accepts the [+-]HHMM part, and it must be
# formatted as [+-]HH'MM'. Note that PDF 1.7 removed the need for
# the trailing apostrophe (after MM), but earlier specs require it.
tz = dt . strftime ( " % z " )
if tz :
tz_pdf = " %s %s ' %s ' " % ( tz [ 0 ] , tz [ 1 : 3 ] , tz [ 3 : 5 ] )
return time_no_tz + tz_pdf
for k in [ " Title " , " Author " , " Creator " , " Producer " , " Subject " ] :
v = locals ( ) [ k . lower ( ) ]
@ -752,7 +761,15 @@ class pdfdoc(object):
)
def datetime_to_xmpdate ( dt ) :
return dt . strftime ( " % Y- % m- %d T % H: % M: % S % z " )
time_no_tz = dt . strftime ( " % Y- % m- %d T % H: % M: % S " )
tz_xmp = " "
# Format for `%z` specifier is [+-]HHMM(SS(\.ffffff)?)?, but the
# XMP metadata only accepts the [+-]HHMM part, and it must be
# formatted as [+-]HH:MM.
tz = dt . strftime ( " % z " )
if tz :
tz_xmp = " %s %s : %s " % ( tz [ 0 ] , tz [ 1 : 3 ] , tz [ 3 : 5 ] )
return time_no_tz + tz_xmp
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 ' >