# paperdoorknob: Print glowfic # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation, version 3. from bs4 import BeautifulSoup from args import spec_from_commandline_args from glowfic import chunkDOMs, makeChunk from spec import Spec def parse(content: bytes) -> BeautifulSoup: return BeautifulSoup(content, 'html.parser') def process(spec: Spec) -> None: spec.texout.write(b'''\\documentclass{article} \\usepackage{graphicx} \\usepackage{wrapfig} ''') if spec.geometry is not None: spec.texout.write(b'\\usepackage[' + spec.geometry.encode('UTF-8') + b']{geometry}\n') spec.texout.write(b'\\begin{document}\n') html = parse(spec.htmlfilter(spec.fetcher.fetch(spec.url))) first = True for r in chunkDOMs(html): if first: first = False else: # h/t https://tex.stackexchange.com/questions/309856 spec.texout.write(b''' \\vspace{-.5\\ht\\strutbox}\\noindent\\hrulefill ''') spec.domfilter(r) chunk = makeChunk(r, spec.images) spec.texout.write(spec.layout.renderChunk(chunk)) spec.texout.write(b'\\end{document}\n') def main() -> None: with spec_from_commandline_args() as spec: process(spec) if __name__ == '__main__': main()