From 3df78775bc9e2e4d861bc0eaa4deadd354dda518 Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Fri, 7 Feb 2014 16:31:02 +0100 Subject: [PATCH] Fixes #3031: Sponsor info in PDF. --- librarian/__init__.py | 1 + librarian/dcparser.py | 5 ++++- librarian/pdf.py | 17 +++++++++++++++-- librarian/pdf/wl.cls | 9 +++++++++ librarian/pdf/wl2tex.xslt | 30 ++++++++++++++++++++++++++++++ librarian/res/sponsors/nck.png | Bin 0 -> 21975 bytes librarian/sponsor.py | 11 +++++++++++ setup.py | 3 ++- 8 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 librarian/res/sponsors/nck.png create mode 100644 librarian/sponsor.py diff --git a/librarian/__init__.py b/librarian/__init__.py index bf15d13..b257b79 100644 --- a/librarian/__init__.py +++ b/librarian/__init__.py @@ -72,6 +72,7 @@ XINS = XMLNamespace("http://www.w3.org/2001/XInclude") XHTMLNS = XMLNamespace("http://www.w3.org/1999/xhtml") NCXNS = XMLNamespace("http://www.daisy.org/z3986/2005/ncx/") OPFNS = XMLNamespace("http://www.idpf.org/2007/opf") +PLMETNS = XMLNamespace("http://dl.psnc.pl/schemas/plmet/") WLNS = EmptyNamespace() diff --git a/librarian/dcparser.py b/librarian/dcparser.py index ab1e714..12bb24f 100644 --- a/librarian/dcparser.py +++ b/librarian/dcparser.py @@ -10,7 +10,7 @@ import re from librarian.util import roman_to_int from librarian import (ValidationError, NoDublinCore, ParseError, DCNS, RDFNS, - XMLNS, WLURI, WLNS) + XMLNS, WLURI, WLNS, PLMETNS) import lxml.etree as etree # ElementTree API using libxml2 from lxml.etree import XMLSyntaxError @@ -242,6 +242,9 @@ class WorkInfo(object): Field( DCNS('identifier.url'), 'url', WLURI, strict=as_wluri_strict), Field( DCNS('rights.license'), 'license', required=False), Field( DCNS('rights'), 'license_description'), + + Field( PLMETNS('digitisationSponsor'), 'sponsors', multiple=True, default=[]), + Field( WLNS('digitisationSponsorNote'), 'sponsor_note', required=False), ) @classmethod diff --git a/librarian/pdf.py b/librarian/pdf.py index 2154985..af258fc 100644 --- a/librarian/pdf.py +++ b/librarian/pdf.py @@ -28,6 +28,7 @@ from librarian.parser import WLDocument from librarian import ParseError, DCNS, get_resource, OutputFile from librarian import functions from librarian.cover import DefaultEbookCover +from .sponsor import sponsor_logo functions.reg_substitute_entities() @@ -247,11 +248,23 @@ def transform(wldoc, verbose=False, save_tex=None, morefloats=None, style_filename = get_stylesheet("wl2tex") style = etree.parse(style_filename) - texml = document.transform(style) - # TeXML -> LaTeX temp = mkdtemp('-wl2pdf') + for sponsor in book_info.sponsors: + ins = etree.Element("data-sponsor", name=sponsor) + logo = sponsor_logo(sponsor) + if logo: + fname = 'sponsor-%s' % os.path.basename(logo) + shutil.copy(logo, os.path.join(temp, fname)) + ins.set('src', fname) + root.insert(0, ins) + + if book_info.sponsor_note: + root.set("sponsor-note", book_info.sponsor_note) + + texml = document.transform(style) + if cover: with open(os.path.join(temp, 'cover.png'), 'w') as f: bound_cover.save(f) diff --git a/librarian/pdf/wl.cls b/librarian/pdf/wl.cls index a9ace8e..8907b08 100644 --- a/librarian/pdf/wl.cls +++ b/librarian/pdf/wl.cls @@ -126,6 +126,8 @@ Letters={SmallCaps,UppercaseSmallCaps} \pagestyle{plain} \usepackage{fancyhdr} +\usepackage{marginnote} + \makeatletter @@ -238,6 +240,13 @@ Letters={SmallCaps,UppercaseSmallCaps} \color{theme} \noindent \rule{\linewidth}{0.4pt} + \ifdefined\sponsors + \marginnote{% + \centering% + \sponsors% + } + \fi + \rightsinfo \vspace{.6em} diff --git a/librarian/pdf/wl2tex.xslt b/librarian/pdf/wl2tex.xslt index ca948da..c120fb0 100644 --- a/librarian/pdf/wl2tex.xslt +++ b/librarian/pdf/wl2tex.xslt @@ -110,6 +110,24 @@ \def\funders{Publikację ufundowali i ufundowały: .} + + + \def\sponsors{ + \scriptsize + + + + + + Sfinansowano ze~środków: + + + + \vspace{1em} + + + } + @@ -404,6 +422,18 @@ + + + + + \includegraphics[height=0.25\textwidth,width=0.25\textwidth,keepaspectratio]{} + + + + + + + diff --git a/librarian/res/sponsors/nck.png b/librarian/res/sponsors/nck.png new file mode 100644 index 0000000000000000000000000000000000000000..e53f19c290853085700c27f9475665f9ccf80fd5 GIT binary patch literal 21975 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 literal 0 HcmV?d00001 diff --git a/librarian/sponsor.py b/librarian/sponsor.py new file mode 100644 index 0000000..15d9107 --- /dev/null +++ b/librarian/sponsor.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# +# This file is part of Librarian, licensed under GNU Affero GPLv3 or later. +# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. +# +from librarian import get_resource + +def sponsor_logo(name): + return { + 'Narodowe Centrum Kultury': get_resource('res/sponsors/nck.png') + }.get(name.strip()) diff --git a/setup.py b/setup.py index 7bcbbc2..732f145 100755 --- a/setup.py +++ b/setup.py @@ -29,7 +29,8 @@ setup( maintainer_email='radoslaw.czajka@nowoczesnapolska.org.pl', url='http://github.com/fnp/librarian', packages=['librarian'], - package_data={'librarian': ['xslt/*.xslt', 'epub/*', 'mobi/*', 'pdf/*', 'fb2/*', 'fonts/*', 'res/*'] + + package_data={'librarian': ['xslt/*.xslt', 'epub/*', 'mobi/*', 'pdf/*', 'fb2/*', 'fonts/*'] + + whole_tree(os.path.join(os.path.dirname(__file__), 'librarian'), 'res') + whole_tree(os.path.join(os.path.dirname(__file__), 'librarian'), 'font-optimizer')}, include_package_data=True, install_requires=[ -- 2.20.1