Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.77 KB | None | 0 0
  1. #! /usr/bin/env python
  2. # Original author Nicholas Kim, modified by Yan Pashkovsky
  3. # New license - GPL v3
  4. import sys
  5. import time
  6. from PyPDF2 import utils, PdfFileReader, PdfFileWriter
  7.  
  8. def get_cmdline_arguments():
  9. """Retrieve command line arguments."""
  10.  
  11. from optparse import OptionParser
  12.  
  13. usage_string = "%prog [-o output_name] file1, file2 [, ...]"
  14.  
  15. parser = OptionParser(usage_string)
  16. parser.add_option(
  17. "-o", "--output",
  18. dest="output_filename",
  19. default=time.strftime("output_%Y%m%d_%H%M%S"),
  20. help="specify output filename (exclude .pdf extension); default is current date/time stamp"
  21. )
  22.  
  23. options, args = parser.parse_args()
  24. if len(args) < 2:
  25. parser.print_help()
  26. sys.exit(1)
  27. return options, args
  28.  
  29. def main():
  30. options, filenames = get_cmdline_arguments()
  31. output_pdf_name = options.output_filename + ".pdf"
  32. files_to_merge = []
  33.  
  34. # get PDF files
  35. for f in filenames:
  36. try:
  37. next_pdf_file = PdfFileReader(open(f, "rb"))
  38. except(utils.PdfReadError):
  39. print >>sys.stderr, "%s is not a valid PDF file." % f
  40. sys.exit(1)
  41. except(IOError):
  42. print >>sys.stderr, "%s could not be found." % f
  43. sys.exit(1)
  44. else:
  45. files_to_merge.append(next_pdf_file)
  46.  
  47. # merge page by page
  48. output_pdf_stream = PdfFileWriter()
  49. j=0
  50. k=0
  51. for f in files_to_merge:
  52. for i in range(f.numPages):
  53. output_pdf_stream.addPage(f.getPage(i))
  54. if i==0:
  55. output_pdf_stream.addBookmark(str(filenames[k]),j)
  56. j = j + 1
  57. k += 1
  58.  
  59. # create output pdf file
  60. try:
  61. output_pdf_file = open(output_pdf_name, "wb")
  62. output_pdf_stream.write(output_pdf_file)
  63. finally:
  64. output_pdf_file.close()
  65.  
  66. print "%s successfully created." % output_pdf_name
  67.  
  68.  
  69. if __name__ == "__main__":
  70. main()
  71.  
  72. modifiedincludepdf{-}{doc01}{MyDoc1.pdf}
  73.  
  74. documentclass{article}
  75. usepackage{hyperref}
  76. usepackage{pdfpages}
  77. usepackage[russian,english]{babel}
  78.  
  79. newcounter{includepdfpage}
  80. newcounter{currentpagecounter}
  81. newcommand{addlabelstoallincludedpages}[1]{
  82. refstepcounter{includepdfpage}
  83. stepcounter{currentpagecounter}
  84. label{#1.thecurrentpagecounter}}
  85. newcommand{modifiedincludepdf}[3]{
  86. setcounter{currentpagecounter}{0}
  87. includepdf[pages=#1,pagecommand=addlabelstoallincludedpages{#2}]{#3}}
  88.  
  89. begin{document}
  90.  
  91. You can refer to the beginning or to a specific page: \
  92. see page pageref{doc01.1} till pageref{doc02.3}.\
  93.  
  94. begin{itemize}
  95. item Here contribution from Grupmate 1 pageref{doc01.1}
  96. item Here contribution from Grupmate 2 pageref{doc02.1}
  97. end{itemize}
  98.  
  99. modifiedincludepdf{-}{doc01}{MyDoc1.pdf}
  100. modifiedincludepdf{-}{doc02}{MyDoc2.pdf}
  101.  
  102. end{document}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement