The current source from http://calibre-ebook.com/download_linux at http://status.calibre-ebook.com/dist/src (tarball) has an updated COPYING file, which contains:
=============COPYING================= Files: src/calibre/ebooks/pdf/*.h,*.cpp License: GPL-2 or later The full text of the GPL is distributed as in /usr/share/common-licenses/GPL-2 on Debian systems. =============COPYING================= So the author seems aware of the problem and addressed it. Diff between the Debian tar and the current download for src/calibre/ebooks/pdf (see attachment) shows only minor changes (apart from the license change in each of the files) in input.py and pdftohtml.py and some more extensive changes in output.py and writer.py. All src/calibre/ebooks/pdf/{*.h,*.cpp} that go into pdfreflow.so are unchanged apart from the license line. So you can just use the new versions for them, i.e. same code, new license. The license change on the python files should be inconsequential, as scripts don't link with libpoppler, hence no real need for a license change on those files and no problem with introducing new code from upstream. Correct me if I see this wrong. Karsten
diff -r calibre-debian/src/calibre/ebooks/pdf//fonts.cpp calibre-ori/src/calibre/ebooks/pdf//fonts.cpp 3c3 < * License: GNU GPL v3 --- > * License: GNU GPL v2+ diff -r calibre-debian/src/calibre/ebooks/pdf//fonts.h calibre-ori/src/calibre/ebooks/pdf//fonts.h 3c3 < * License: GNU GPL v3 --- > * License: GNU GPL v2+ diff -r calibre-debian/src/calibre/ebooks/pdf//images.cpp calibre-ori/src/calibre/ebooks/pdf//images.cpp 0a1,7 > /** > * Copyright 2009 Kovid Goyal <ko...@kovidgoyal.net> > * License: GNU GPL v2+ > */ > > > diff -r calibre-debian/src/calibre/ebooks/pdf//images.h calibre-ori/src/calibre/ebooks/pdf//images.h 0a1,7 > /** > * Copyright 2009 Kovid Goyal <ko...@kovidgoyal.net> > * License: GNU GPL v2+ > */ > > > diff -r calibre-debian/src/calibre/ebooks/pdf//input.py calibre-ori/src/calibre/ebooks/pdf//input.py 25c25 < OptionRecommendation(name='unwrap_factor', recommended_value=0.5, --- > OptionRecommendation(name='unwrap_factor', recommended_value=0.45, 28c28 < 'default is 0.5, this is the median line length.')), --- > 'default is 0.45, just below the median line length.')), diff -r calibre-debian/src/calibre/ebooks/pdf//links.cpp calibre-ori/src/calibre/ebooks/pdf//links.cpp 3c3 < * License: GNU GPL v3 --- > * License: GNU GPL v2+ diff -r calibre-debian/src/calibre/ebooks/pdf//links.h calibre-ori/src/calibre/ebooks/pdf//links.h 3c3 < * License: GNU GPL v3 --- > * License: GNU GPL v2+ diff -r calibre-debian/src/calibre/ebooks/pdf//main.cpp calibre-ori/src/calibre/ebooks/pdf//main.cpp 0a1,7 > /** > * Copyright 2009 Kovid Goyal <ko...@kovidgoyal.net> > * License: GNU GPL v2+ > */ > > > diff -r calibre-debian/src/calibre/ebooks/pdf//output.py calibre-ori/src/calibre/ebooks/pdf//output.py 61a62,84 > # Remove page-break-before on <body> element as it causes > # blank pages in PDF Output > from calibre.ebooks.oeb.base import OEB_STYLES, XPath > stylesheet = None > for item in self.oeb.manifest: > if item.media_type.lower() in OEB_STYLES: > stylesheet = item > break > if stylesheet is not None: > from cssutils.css import CSSRule > classes = set(['.calibre']) > for x in self.oeb.spine: > root = x.data > body = XPath('//h:bo...@class]')(root) > if body: > classes.add('.'+body[0].get('class')) > > for rule in stylesheet.data.cssRules.rulesOfType(CSSRule.STYLE_RULE): > if rule.selectorList.selectorText in classes: > rule.style.removeProperty('page-break-before') > rule.style.removeProperty('page-break-after') > > 80a104,105 > if not isinstance(self.cover_data, basestring): > self.cover_data = None diff -r calibre-debian/src/calibre/ebooks/pdf//pdftohtml.py calibre-ori/src/calibre/ebooks/pdf//pdftohtml.py 26,27c26,27 < if (islinux or isfreebsd) and getattr(sys, 'frozen_path', False): < PDFTOHTML = os.path.join(getattr(sys, 'frozen_path'), 'pdftohtml') --- > if (islinux or isfreebsd) and getattr(sys, 'frozen', False): > PDFTOHTML = os.path.join(sys.executables_location, 'bin', 'pdftohtml') diff -r calibre-debian/src/calibre/ebooks/pdf//reflow.cpp calibre-ori/src/calibre/ebooks/pdf//reflow.cpp 3c3 < * License: GNU GPL v3 --- > * License: GNU GPL v2+ 622a623 > default: break; diff -r calibre-debian/src/calibre/ebooks/pdf//reflow.h calibre-ori/src/calibre/ebooks/pdf//reflow.h 3c3 < * License: GNU GPL v3 --- > * License: GNU GPL v2+ diff -r calibre-debian/src/calibre/ebooks/pdf//utils.h calibre-ori/src/calibre/ebooks/pdf//utils.h 3c3 < * License: GNU GPL v3 --- > * License: GNU GPL v2+ diff -r calibre-debian/src/calibre/ebooks/pdf//writer.py calibre-ori/src/calibre/ebooks/pdf//writer.py 28,31d27 < def get_pdf_printer(): < return QPrinter(QPrinter.HighResolution) < < 45c41 < def setup_printer(opts, for_comic=False): --- > def get_pdf_printer(opts, for_comic=False): 50c46 < printer = get_pdf_printer() --- > printer = QPrinter(QPrinter.HighResolution) 64c60 < printer.setPaperSize(QSizeF(float(w) / dpi, float(h)/dpi), QPrinter.Inch) --- > printer.setPaperSize(QSizeF(float(w) / dpi, float(h) / dpi), QPrinter.Inch) 66c62,68 < printer.setPageMargins(0, 0, 0, 0, QPrinter.Point) --- > if for_comic: > # Comic pages typically have their own margins, or their background > # color is not white, in which case the margin looks bad > printer.setPageMargins(0, 0, 0, 0, QPrinter.Point) > else: > printer.setPageMargins(opts.margin_left, opts.margin_top, > opts.margin_right, opts.margin_bottom, QPrinter.Point) 68a71 > printer.setFullPage(True) 72c75 < printer = setup_printer(opts, for_comic=for_comic) --- > printer = get_pdf_printer(opts, for_comic=for_comic) 157,169d159 < def get_printer(self, set_horz_margins=False): < printer = get_pdf_printer() < printer.setPaperSize(QSizeF(self.size[0] * 10, self.size[1] * 10), QPrinter.Millimeter) < if set_horz_margins: < printer.setPageMargins(0., self.opts.margin_top, 0., < self.opts.margin_bottom, QPrinter.Point) < else: < printer.setPageMargins(0, 0, 0, 0, QPrinter.Point) < printer.setOrientation(orientation(self.opts.orientation)) < printer.setOutputFormat(QPrinter.PdfFormat) < printer.setFullPage(not set_horz_margins) < return printer < 173,174c163,164 < self.logger.debug('\tRendering item %s as %i' % (os.path.basename(str(self.view.url().toLocalFile())), len(self.combine_queue))) < printer = self.get_printer(set_horz_margins=True) --- > self.logger.debug('\tRendering item %s as %i.pdf' % (os.path.basename(str(self.view.url().toLocalFile())), len(self.combine_queue))) > printer = get_pdf_printer(self.opts) 188c178 < printer = self.get_printer() --- > printer = get_pdf_printer(self.opts) 236,240c226 < printer = get_pdf_printer() < printer.setPaperSize(QSizeF(self.size[0] * 10, self.size[1] * 10), QPrinter.Millimeter) < printer.setPageMargins(0, 0, 0, 0, QPrinter.Point) < printer.setOrientation(orientation(self.opts.orientation)) < printer.setOutputFormat(QPrinter.PdfFormat) --- > printer = get_pdf_printer(self.opts, for_comic=True) 245d230 < printer.setFullPage(True)