Guest User

Untitled

a guest
Aug 17th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.78 KB | None | 0 0
  1. # Upscale a PDF file
  2. import os
  3. from tempfile import NamedTemporaryFile
  4.  
  5. try:
  6. from PyPDF3 import PdfFileReader, PdfFileWriter
  7. from PyPDF3.pdf import PageObject
  8. except ImportError:
  9. from PyPDF2 import PdfFileReader, PdfFileWriter
  10. from PyPDF2.pdf import PageObject
  11.  
  12.  
  13. def dimensions(path):
  14. """Get width and height of a PDF"""
  15. pdf = PdfFileReader(path)
  16. size = pdf.getPage(0).mediaBox
  17. return {'w': float(size[2]), 'h': float(size[3])}
  18.  
  19.  
  20. def add_suffix(file_path, suffix, sep):
  21. split = os.path.basename(file_path).rsplit('.', 1)
  22. return os.path.join(os.path.dirname(file_path), split[0] + sep + suffix + '.' + split[1])
  23.  
  24.  
  25. def upscale(file_name, scale=1.5, margin_x=0, margin_y=0, suffix='scaled', tempdir=None):
  26. """Upscale a PDF to a large size."""
  27. # Set output file name
  28. if tempdir:
  29. output = NamedTemporaryFile(suffix='.pdf', dir=tempdir, delete=False).name
  30. elif suffix:
  31. output = os.path.join(os.path.dirname(file_name), add_suffix(file_name, suffix))
  32. else:
  33. output = NamedTemporaryFile(suffix='.pdf').name
  34.  
  35. reader = PdfFileReader(file_name)
  36. writer = PdfFileWriter()
  37. dims = dimensions(file_name)
  38. target_w = dims['w'] * scale
  39. target_h = dims['h'] * scale
  40.  
  41. # Number of pages in input document
  42. page_count = reader.getNumPages()
  43.  
  44. for page_number in range(page_count):
  45. wtrmrk = reader.getPage(page_number)
  46.  
  47. page = PageObject.createBlankPage(width=target_w, height=target_h)
  48. page.mergeScaledTranslatedPage(wtrmrk, scale, margin_x, margin_y)
  49. writer.addPage(page)
  50.  
  51. with open(output, "wb") as outputStream:
  52. writer.write(outputStream)
  53.  
  54. return output
  55.  
  56.  
  57. def main():
  58. pdf = 'your/path/to/doc.pdf'
  59. scale = 1.0
  60. upscale(pdf, scale)
  61.  
  62.  
  63. if __name__ == '__main__':
  64. main()
Add Comment
Please, Sign In to add comment