+ logger.log(15, 'Comic Book CBZ file has been written to \'{0}\''.format(doujinshi_dir))
+
+
+def generate_pdf(output_dir='.', doujinshi_obj=None, rm_origin_dir=False):
+ try:
+ import img2pdf
+ except ImportError:
+ logger.error("Please install img2pdf package by using pip.")
+
+ """Write images to a PDF file using img2pdf."""
+ if doujinshi_obj is not None:
+ doujinshi_dir = os.path.join(output_dir, doujinshi_obj.filename)
+ pdf_filename = os.path.join(
+ os.path.join(doujinshi_dir, '..'),
+ '{}.pdf'.format(doujinshi_obj.filename)
+ )
+ else:
+ pdf_filename = './doujinshi.pdf'
+ doujinshi_dir = '.'
+
+ file_list = os.listdir(doujinshi_dir)
+ file_list.sort()
+
+ logger.info('Writing PDF file to path: {}'.format(pdf_filename))
+ with open(pdf_filename, 'wb') as pdf_f:
+ full_path_list = (
+ [os.path.join(doujinshi_dir, image) for image in file_list]
+ )
+ pdf_f.write(img2pdf.convert(full_path_list))
+
+ if rm_origin_dir:
+ shutil.rmtree(doujinshi_dir, ignore_errors=True)
+
+ logger.log(15, 'PDF file has been written to \'{0}\''.format(doujinshi_dir))
+
+
+def unicode_truncate(s, length, encoding='utf-8'):
+ """https://stackoverflow.com/questions/1809531/truncating-unicode-so-it-fits-a-maximum-size-when-encoded-for-wire-transfer
+ """
+ encoded = s.encode(encoding)[:length]
+ return encoded.decode(encoding, 'ignore')