123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- from PyPDF2 import PdfFileWriter, PdfFileReader
- output = PdfFileWriter()
- input1 = PdfFileReader(open("document1.pdf", "rb"))
- # print how many pages input1 has:
- print("document1.pdf has %d pages." % input1.getNumPages())
- # print how many pages input1 has in python3:
- # print("This chart has {} pages.".format(input1.getNumPages()))
- # add page 1 from input1 to output document, unchanged:
- output.addPage(input1.getPage(0))
- # add page 2 from input1, but rotated clockwise 90 degrees:
- output.addPage(input1.getPage(1).rotateClockwise(90))
- # add page 3 from input1, rotated the other way:
- output.addPage(input1.getPage(2).rotateCounterClockwise(90))
- # alt: output.addPage(input1.getPage(2).rotateClockwise(270))
- # add page 4 from input1, but first add a watermark from another PDF:
- page4 = input1.getPage(3)
- watermark = PdfFileReader(open("watermark.pdf", "rb"))
- page4.mergePage(watermark.getPage(0))
- output.addPage(page4)
- # add page 5 from input1, but crop it to half size:
- page5 = input1.getPage(4)
- page5.mediaBox.upperRight = (
- page5.mediaBox.getUpperRight_x() / 2,
- page5.mediaBox.getUpperRight_y() / 2
- )
- output.addPage(page5)
- # add some Javascript to launch the print window on opening this PDF.
- # the password dialog may prevent the print dialog from being shown,
- # comment the the encription lines, if that's the case, to try this out:
- output.addJS("this.print({bUI:true,bSilent:false,bShrinkToFit:true});")
- # encrypt your new PDF and add a password:
- password = "secret"
- output.encrypt(password)
- # add a title to your new PDF's metadata:
- output.addMetadata({'/Title': 'PDF Metadata Title'})
- # finally, write "output" to document-output.pdf
- with open("PyPDF2-output.pdf", "wb") as outputStream:
- output.write(outputStream)
|