X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/17a9ed3b7ef12e0786ddf46bf8a52b1087224762..141733d3db8c11f1eb69a9c0195f07c3c2ed3f8f:/librarian/pdf.py?ds=sidebyside diff --git a/librarian/pdf.py b/librarian/pdf.py index b8aafdb..95883e1 100644 --- a/librarian/pdf.py +++ b/librarian/pdf.py @@ -27,7 +27,8 @@ from librarian.dcparser import Person from librarian.parser import WLDocument from librarian import ParseError, DCNS, get_resource, OutputFile from librarian import functions -from librarian.cover import WLCover +from librarian.cover import DefaultEbookCover +from .sponsor import sponsor_logo functions.reg_substitute_entities() @@ -94,6 +95,17 @@ def fix_hanging(doc): exclude=[DCNS("identifier.url"), DCNS("rights.license")] ) +def fix_tables(doc): + for kol in doc.iter(tag='kol'): + if kol.tail is not None: + if not kol.tail.strip(): + kol.tail = None + for table in doc.iter(tag='tabela'): + if table.get('ramka') == '1' or table.get('ramki') == '1': + table.set('_format', '|' + 'X|' * len(table[0])) + else: + table.set('_format', 'X' * len(table[0])) + def move_motifs_inside(doc): """ moves motifs to be into block elements """ @@ -198,21 +210,22 @@ def transform(wldoc, verbose=False, save_tex=None, morefloats=None, # Parse XSLT try: + book_info = wldoc.book_info document = load_including_children(wldoc) root = document.edoc.getroot() if cover: if cover is True: - cover = WLCover - bound_cover = cover(document.book_info) + cover = DefaultEbookCover + bound_cover = cover(book_info, width=1200) root.set('data-cover-width', str(bound_cover.width)) root.set('data-cover-height', str(bound_cover.height)) if bound_cover.uses_dc_cover: - if document.book_info.cover_by: - root.set('data-cover-by', document.book_info.cover_by) - if document.book_info.cover_source: + if book_info.cover_by: + root.set('data-cover-by', book_info.cover_by) + if book_info.cover_source: root.set('data-cover-source', - document.book_info.cover_source) + book_info.cover_source) if flags: for flag in flags: root.set('flag-' + flag, 'yes') @@ -228,8 +241,14 @@ def transform(wldoc, verbose=False, save_tex=None, morefloats=None, root.set('customizations', u','.join(customizations)) # add editors info - root.set('editors', u', '.join(sorted( - editor.readable() for editor in document.editors()))) + editors = document.editors() + if editors: + root.set('editors', u', '.join(sorted( + editor.readable() for editor in editors))) + if document.book_info.funders: + root.set('funders', u', '.join(document.book_info.funders)) + if document.book_info.thanks: + root.set('thanks', document.book_info.thanks) # hack the tree move_motifs_inside(document.edoc) @@ -237,19 +256,33 @@ def transform(wldoc, verbose=False, save_tex=None, morefloats=None, parse_creator(document.edoc) substitute_hyphens(document.edoc) fix_hanging(document.edoc) + fix_tables(document.edoc) # wl -> TeXML style_filename = get_stylesheet("wl2tex") style = etree.parse(style_filename) - - texml = document.transform(style) + functions.reg_mathml_latex() # 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) + bound_cover.save(f, quality=80) del document # no longer needed large object :)