From ba9fbaea64844209ba3c3b79fe8d051933578f22 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 10 Jan 2013 10:50:39 +0530 Subject: [PATCH] PDF Output: Add creation date --- src/calibre/ebooks/pdf/render/common.py | 6 ++++++ src/calibre/ebooks/pdf/render/serialize.py | 8 ++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/pdf/render/common.py b/src/calibre/ebooks/pdf/render/common.py index 347c680238..d5f4b6a66b 100644 --- a/src/calibre/ebooks/pdf/render/common.py +++ b/src/calibre/ebooks/pdf/render/common.py @@ -9,6 +9,7 @@ __docformat__ = 'restructuredtext en' import codecs, zlib from io import BytesIO +from datetime import datetime from calibre.constants import plugins, ispy3 @@ -74,6 +75,11 @@ def serialize(o, stream): o.pdf_serialize(stream) elif o is None: stream.write_raw(b'null') + elif isinstance(o, datetime): + val = o.strftime("D:%Y%m%d%H%M%%02d%z")%min(59, o.second) + if datetime.tzinfo is not None: + val = "(%s'%s')"%(val[:-2], val[-2:]) + stream.write(val.encode('ascii')) else: raise ValueError('Unknown object: %r'%o) diff --git a/src/calibre/ebooks/pdf/render/serialize.py b/src/calibre/ebooks/pdf/render/serialize.py index 3ef07eebc1..936cb5f156 100644 --- a/src/calibre/ebooks/pdf/render/serialize.py +++ b/src/calibre/ebooks/pdf/render/serialize.py @@ -18,6 +18,7 @@ from calibre.ebooks.pdf.render.common import ( fmtnum) from calibre.ebooks.pdf.render.fonts import FontManager from calibre.ebooks.pdf.render.links import Links +from calibre.utils.date import utcnow PDFVER = b'%PDF-1.3' @@ -259,8 +260,11 @@ class PDFStream(object): self.objects.add(PageTree(page_size)) self.objects.add(Catalog(self.page_tree)) self.current_page = Page(self.page_tree, compress=self.compress) - self.info = Dictionary({'Creator':String(creator), - 'Producer':String(creator)}) + self.info = Dictionary({ + 'Creator':String(creator), + 'Producer':String(creator), + 'CreationDate': utcnow(), + }) self.stroke_opacities, self.fill_opacities = {}, {} self.font_manager = FontManager(self.objects, self.compress) self.image_cache = {}