X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/3a0c83394d5783715fab2be29fa1a9cfc3574e28..93943beb107fb483855f5c26fef660df294546a3:/src/librarian/pdf.py?ds=inline diff --git a/src/librarian/pdf.py b/src/librarian/pdf.py index 94d14cf..c7de78b 100644 --- a/src/librarian/pdf.py +++ b/src/librarian/pdf.py @@ -188,6 +188,29 @@ def hack_motifs(doc): break +def add_fundraising(doc, fundraising): + # Before each naglowek_rozdzial and naglowek_scena and in the end + spots = [] + for naglowek in doc.xpath('//naglowek_czesc|//naglowek_akt'): + spot = etree.Element('f_spot') + naglowek.addprevious(spot) + spots.append(spot) + spot = etree.Element('f_spot') + doc.getroot()[-1].append(spot) + spots.append(spot) + e = len(spots) + nfunds = len(fundraising) + if e > 4 * nfunds: + nfunds *= 2 + for f in range(nfunds): + spot_index = int(f / nfunds * e) + spots[spot_index].set('active', 'true') + elem = etree.fromstring('' + fundraising[f % len(fundraising)] + '') + spots[spot_index].text = elem.text + for c in elem: + spots[spot_index].append(c) + + def parse_creator(doc): """Generates readable versions of creator and translator tags. @@ -242,7 +265,7 @@ def package_available(package, args='', verbose=False): def transform(wldoc, verbose=False, save_tex=None, morefloats=None, cover=None, flags=None, customizations=None, base_url='file://./', - latex_dir=False): + latex_dir=False, fundraising=None): """ produces a PDF file with XeLaTeX wldoc: a WLDocument @@ -305,6 +328,8 @@ def transform(wldoc, verbose=False, save_tex=None, morefloats=None, root.set('thanks', document.book_info.thanks) # hack the tree + if fundraising: + add_fundraising(document.edoc, fundraising) move_motifs_inside(document.edoc) hack_motifs(document.edoc) parse_creator(document.edoc) @@ -379,6 +404,7 @@ def transform(wldoc, verbose=False, save_tex=None, morefloats=None, # LaTeX -> PDF shutil.copy(get_resource('pdf/wl.cls'), temp) shutil.copy(get_resource('res/wl-logo.png'), temp) + shutil.copy(get_resource('fonts/OpenSans-VariableFont_wdth,wght.ttf'), temp) if latex_dir: return temp @@ -438,6 +464,8 @@ def load_including_children(wldoc=None, provider=None, uri=None): text = re.sub(r"([\u0400-\u04ff]+)", r"\1", text) # Geometric shapes. text = re.sub(r"([\u25a0-\u25ff]+)", r"\1", text) + # Hebrew + text = re.sub(r"([\u0590-\u05ff]+)", r"\1", text) document = WLDocument.from_bytes(text.encode('utf-8'), parse_dublincore=True, provider=provider)