Hellerick_Ferlibay

Comvert image folder to PDF

Nov 30th, 2018
322
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.61 KB | None | 0 0
  1. import os, re
  2. from PIL import Image as image
  3. from reportlab.pdfgen import canvas
  4. from reportlab.lib.units import mm
  5.  
  6.  
  7. maxpagesize = (210*mm, 297*mm) ## A4
  8. maxpagesize = (139.5*mm, 194.5*mm) ## Boox
  9.  
  10. rotate = False # Allows page rotation
  11.  
  12.  
  13. def convertfolder(folder, titlePrefix='', author='anonymous'):
  14.     if folder.endswith(('/', '\\')):
  15.         folder = folder[:-1]
  16.     folder = re.sub('file:///', '/', folder)
  17.     print('Proceeding the folder "%s"'%folder)
  18.  
  19.     filelist = []
  20.     for a,b,c in os.walk(folder):
  21.         for file in c:
  22.             if (file[-4:].lower() =='.png' or
  23.                 file[-4:].lower() =='.jpg' or
  24.                 file[-5:].lower() =='.jpeg'):
  25.                     filelist = filelist + [os.path.join(a, file)]
  26.  
  27.     filelist.sort()
  28.     pdffilename = folder + '.pdf'
  29.     print('PDF file name', pdffilename)
  30.     c = canvas.Canvas(pdffilename, pagesize=maxpagesize)
  31.     c.setTitle(titlePrefix+re.sub(r'\A.*[/\\]', '', folder))
  32.     c.setAuthor(author)
  33.     for f in filelist:
  34.         with image.open(f) as i:
  35.             imagesize = i.size
  36.             if rotate and imagesize[0]>imagesize[1]:
  37.                 needsrotation = True
  38.                 imagesize = (imagesize[1], imagesize[0])
  39.             else:
  40.                 needsrotation = False
  41.             scale = min(maxpagesize[0]/imagesize[0], maxpagesize[1]/imagesize[1])
  42.             pagesize = (scale*imagesize[0], scale*imagesize[1])
  43.         c.setPageSize(pagesize)
  44.         if needsrotation:
  45.             c.rotate(90)
  46.             c.drawImage(f, 0, -pagesize[0], pagesize[1], pagesize[0])
  47.         else:
  48.             c.drawImage(f, 0, 0, *pagesize)
  49.         c.showPage()
  50.     c.save()
  51.  
  52.  
  53. def convertfolderlist(folderlist, titlePrefix='', author='anonymous'):
  54.     folderlist = folderlist.split('\n')
  55.     folderlist = [i for i in folderlist if i!='']
  56.     for i in folderlist: convertfolder(i, titlePrefix, author)
  57.  
  58.  
  59. if __name__=="__main__":
  60. ##    convertfolderlist("/home/hellerick/Documents/Akiba/Manga/Kannagi (mangatraders.org)/Volumes/Vol 01/Kannagi_-_Chapter_01/")
  61.     convertfolderlist(r"""
  62. file:///home/hellerick/Documents/Akiba/Manga/Q/OZ. Suzumiya Haruhi no Yuuutsu/PDF/Suzumiya Haruhi no Yuuutsu. Vol 01 (EN)
  63. file:///home/hellerick/Documents/Akiba/Manga/Q/OZ. Suzumiya Haruhi no Yuuutsu/PDF/Suzumiya Haruhi no Yuuutsu. Vol 02 (EN)
  64. file:///home/hellerick/Documents/Akiba/Manga/Q/OZ. Suzumiya Haruhi no Yuuutsu/PDF/Suzumiya Haruhi no Yuuutsu. Vol 03 (EN)
  65. file:///home/hellerick/Documents/Akiba/Manga/Q/OZ. Suzumiya Haruhi no Yuuutsu/PDF/Suzumiya Haruhi no Yuuutsu. Vol 04 (EN)
  66. file:///home/hellerick/Documents/Akiba/Manga/Q/OZ. Suzumiya Haruhi no Yuuutsu/PDF/Suzumiya Haruhi no Yuuutsu. Vol 05 (EN)
  67. file:///home/hellerick/Documents/Akiba/Manga/Q/OZ. Suzumiya Haruhi no Yuuutsu/PDF/Suzumiya Haruhi no Yuuutsu. Vol 06 (EN)
  68. file:///home/hellerick/Documents/Akiba/Manga/Q/OZ. Suzumiya Haruhi no Yuuutsu/PDF/Suzumiya Haruhi no Yuuutsu. Vol 07 (EN)
  69. file:///home/hellerick/Documents/Akiba/Manga/Q/OZ. Suzumiya Haruhi no Yuuutsu/PDF/Suzumiya Haruhi no Yuuutsu. Vol 08 (EN)
  70. file:///home/hellerick/Documents/Akiba/Manga/Q/OZ. Suzumiya Haruhi no Yuuutsu/PDF/Suzumiya Haruhi no Yuuutsu. Vol 09 (EN)
  71. file:///home/hellerick/Documents/Akiba/Manga/Q/OZ. Suzumiya Haruhi no Yuuutsu/PDF/Suzumiya Haruhi no Yuuutsu. Vol 10 (EN)
  72. file:///home/hellerick/Documents/Akiba/Manga/Q/OZ. Suzumiya Haruhi no Yuuutsu/PDF/Suzumiya Haruhi no Yuuutsu. Vol 11 (EN)
  73. file:///home/hellerick/Documents/Akiba/Manga/Q/OZ. Suzumiya Haruhi no Yuuutsu/PDF/Suzumiya Haruhi no Yuuutsu. Vol 12 (EN)
  74. file:///home/hellerick/Documents/Akiba/Manga/Q/OZ. Suzumiya Haruhi no Yuuutsu/PDF/Suzumiya Haruhi no Yuuutsu. Vol 13 (EN)
  75. file:///home/hellerick/Documents/Akiba/Manga/Q/OZ. Suzumiya Haruhi no Yuuutsu/PDF/Suzumiya Haruhi no Yuuutsu. Vol 14 (EN)
  76. file:///home/hellerick/Documents/Akiba/Manga/Q/OZ. Suzumiya Haruhi no Yuuutsu/PDF/Suzumiya Haruhi no Yuuutsu. Vol 15 (EN)
  77. file:///home/hellerick/Documents/Akiba/Manga/Q/OZ. Suzumiya Haruhi no Yuuutsu/PDF/Suzumiya Haruhi no Yuuutsu. Vol 16 (EN)
  78. file:///home/hellerick/Documents/Akiba/Manga/Q/OZ. Suzumiya Haruhi no Yuuutsu/PDF/Suzumiya Haruhi no Yuuutsu. Vol 17 (EN)
  79. file:///home/hellerick/Documents/Akiba/Manga/Q/OZ. Suzumiya Haruhi no Yuuutsu/PDF/Suzumiya Haruhi no Yuuutsu. Vol 18 (EN)
  80. file:///home/hellerick/Documents/Akiba/Manga/Q/OZ. Suzumiya Haruhi no Yuuutsu/PDF/Suzumiya Haruhi no Yuuutsu. Vol 19 (EN)
  81. file:///home/hellerick/Documents/Akiba/Manga/Q/OZ. Suzumiya Haruhi no Yuuutsu/PDF/Suzumiya Haruhi no Yuuutsu. Vol 20 (EN)
  82. """, titlePrefix = '', author='TANIGAWA Nagaru, ITOU Noiji, TSUGANO Gaku')
  83. # the file paths can be entered with "file:///" or without it
Advertisement
Add Comment
Please, Sign In to add comment