PDF を暗号化する
Jython で PDF を暗号化するスクリプト. Jython 2.5.0 + iText 2.1.5 + Bouncy Castle 1.43 で動作確認.
Jython 2.5.0 リリース記念(嘘). Office 2007 SP2 リリース記念(本当).
from sys import argv from java.io import FileOutputStream from com.lowagie.text import Document from com.lowagie.text.pdf import PdfReader, PdfWriter def encrypt_pdf(src, dst, password): reader = None doc = None writer = None try: reader = PdfReader(src) doc = Document(reader.getPageSize(1)) writer = PdfWriter.getInstance(doc, FileOutputStream(dst)) writer.open() permissions = PdfWriter.AllowCopy or PdfWriter.AllowPrinting writer.setEncryption(PdfWriter.STRENGTH128BITS, password, None, permissions) doc.open() for i in range(reader.getNumberOfPages()): doc.newPage() writer.directContent.addTemplate(writer.getImportedPage(reader, i + 1), 0, 0) doc.addKeywords(reader.info['Keywords'] or '') doc.addAuthor(reader.info['Author'] or '') doc.addTitle(reader.info['Title'] or '') doc.addCreator(reader.info['Creator'] or '') doc.addSubject(reader.info['Subject'] or '') finally: if doc: doc.close() if writer: writer.close() if reader: reader.close() encrypt_pdf(argv[1], argv[2], argv[3])