Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /usr/bin/env python
- # Original author Nicholas Kim, modified by Yan Pashkovsky
- # New license - GPL v3
- import sys
- import time
- from PyPDF2 import utils, PdfFileReader, PdfFileWriter
- def get_cmdline_arguments():
- """Retrieve command line arguments."""
- from optparse import OptionParser
- usage_string = "%prog [-o output_name] file1, file2 [, ...]"
- parser = OptionParser(usage_string)
- parser.add_option(
- "-o", "--output",
- dest="output_filename",
- default=time.strftime("output_%Y%m%d_%H%M%S"),
- help="specify output filename (exclude .pdf extension); default is current date/time stamp"
- )
- options, args = parser.parse_args()
- if len(args) < 2:
- parser.print_help()
- sys.exit(1)
- return options, args
- def main():
- options, filenames = get_cmdline_arguments()
- output_pdf_name = options.output_filename + ".pdf"
- files_to_merge = []
- # get PDF files
- for f in filenames:
- try:
- next_pdf_file = PdfFileReader(open(f, "rb"))
- except(utils.PdfReadError):
- print >>sys.stderr, "%s is not a valid PDF file." % f
- sys.exit(1)
- except(IOError):
- print >>sys.stderr, "%s could not be found." % f
- sys.exit(1)
- else:
- files_to_merge.append(next_pdf_file)
- # merge page by page
- output_pdf_stream = PdfFileWriter()
- j=0
- k=0
- for f in files_to_merge:
- for i in range(f.numPages):
- output_pdf_stream.addPage(f.getPage(i))
- if i==0:
- output_pdf_stream.addBookmark(str(filenames[k]),j)
- j = j + 1
- k += 1
- # create output pdf file
- try:
- output_pdf_file = open(output_pdf_name, "wb")
- output_pdf_stream.write(output_pdf_file)
- finally:
- output_pdf_file.close()
- print "%s successfully created." % output_pdf_name
- if __name__ == "__main__":
- main()
- modifiedincludepdf{-}{doc01}{MyDoc1.pdf}
- documentclass{article}
- usepackage{hyperref}
- usepackage{pdfpages}
- usepackage[russian,english]{babel}
- newcounter{includepdfpage}
- newcounter{currentpagecounter}
- newcommand{addlabelstoallincludedpages}[1]{
- refstepcounter{includepdfpage}
- stepcounter{currentpagecounter}
- label{#1.thecurrentpagecounter}}
- newcommand{modifiedincludepdf}[3]{
- setcounter{currentpagecounter}{0}
- includepdf[pages=#1,pagecommand=addlabelstoallincludedpages{#2}]{#3}}
- begin{document}
- You can refer to the beginning or to a specific page: \
- see page pageref{doc01.1} till pageref{doc02.3}.\
- begin{itemize}
- item Here contribution from Grupmate 1 pageref{doc01.1}
- item Here contribution from Grupmate 2 pageref{doc02.1}
- end{itemize}
- modifiedincludepdf{-}{doc01}{MyDoc1.pdf}
- modifiedincludepdf{-}{doc02}{MyDoc2.pdf}
- end{document}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement