def addMetadata(self, inputstream, metadata): """Adds metadata to a PDF document""" reader = PdfReader(inputstream) outputstream = ByteArrayOutputStream() stp = PdfStamper(reader, outputstream, "\0") meta = reader.getInfo() for key in ('Subject', 'Author', 'Keywords', 'Title', 'Creator', 'CreationDate'): if key in metadata: meta.put(key, metadata[key]) stp.setMoreInfo(meta) stp.close() return outputstream
def pdf_fill(orig_pdf, new_pdf, vals): print "pdf_fill", orig_pdf, new_pdf, vals t0 = time.time() rd = PdfReader(orig_pdf) st = PdfStamper(rd, FileOutputStream(new_pdf)) form = st.getAcroFields() for k, v in vals.items(): try: form.setField(k, str(v)) except Exception, e: raise Exception("Field %s: %s" % (k, str(e)))
def openpdf(self, inputpdf): self.inputpdf = inputpdf self.input = open(self.inputpdf, "rb") try: self.currentdoc = PdfReader(self.input, self.password) print 'loaded PDF successfully' except IOError, errorout: stringer = str(errorout) return stringer
def sign(self, inputstream, sign_keyname, sign_reason, visible=False): """Sign a PDF""" # This might raise a ValueError which will be catched one stack above key, chain = self.getKeychain(sign_keyname) reader = PdfReader(inputstream) outputstream = ByteArrayOutputStream() stp = PdfStamper.createSignature(reader, outputstream, "\0") sap = stp.getSignatureAppearance() sap.setCrypto(key, chain, None, PdfSignatureAppearance.WINCER_SIGNED) sap.setCertificationLevel(PdfSignatureAppearance.CERTIFIED_NO_CHANGES_ALLOWED) sap.setReason(sign_reason) sap.setLocation("Remscheid, Germany") # TODO: Configure if visible: sap.setVisibleSignature(Rectangle(100, 100, 200, 200), 1, None) stp.close() return outputstream
from java.io import FileOutputStream from java.util import ArrayList import sys # This Python file is a straight translation of the Concatenate example if len(sys.argv) < 3: print 'Usage:', sys.argv[0], 'source(s).pdf...', 'target.pdf' sys.exit(1) copy = None all_bookmarks = ArrayList() page_offset = 0 for file in sys.argv[1:len(sys.argv) - 1]: reader = PdfReader(file) reader.consolidateNamedDestinations() bookmarks = SimpleBookmark.getBookmark(reader) if bookmarks != None: if page_offset != 0: SimpleBookmark.shiftPageNumbers(bookmarks, \ page_offset, None) all_bookmarks.add(bookmarks) page_count = reader.getNumberOfPages() page_offset += page_offset if copy == None: document = Document(reader.getPageSizeWithRotation(1)) output = FileOutputStream(sys.argv[len(sys.argv) - 1]) copy = PdfCopy(document, output)
#!/bin/sh ''''exec "$(dirname "$0")"/../fiji --jython "$0" "$@" # (call again with fiji)''' from com.lowagie.text.pdf import PdfReader, PdfName, PdfNumber, PdfStamper from java.io import FileOutputStream import sys if len(sys.argv) != 3: print 'Usage:', sys.argv[0], 'source.pdf', 'target.pdf' sys.exit(1) reader = PdfReader(sys.argv[1]) for k in range(0, reader.getNumberOfPages()): reader.getPageN(k + 1).put(PdfName.ROTATE, PdfNumber(90)) print "rotated", k stamper = PdfStamper(reader, FileOutputStream(sys.argv[2])) stamper.close()