Если вы уже знакомы с API Apple PDFKit, то шифрование PDF очень просто.
Создать вспомогательный словарь с ключом / значениями для таких элементов, как kCGPDFContextOwnerPassword
и kCGPDFContextAllowsCopying
.Затем используйте метод PDFDocument
writeToFile:withOptions
.
https://developer.apple.com/documentation/pdfkit/pdfdocument/1436053-writetofile?language=objc
Вот скрипт на python, который будет шифровать PDF-файлы, но его очень легко перевести на Swift или ObjC.Словарь называется 'options
'.
В командной строке укажите имена файлов PDF в качестве аргументов.Вы также можете использовать это в действии Automator «Run Shell Script».
#!/usr/bin/python
# coding: utf-8
import os, sys
from Quartz import PDFDocument, kCGPDFContextAllowsCopying, kCGPDFContextAllowsPrinting, kCGPDFContextUserPassword, kCGPDFContextOwnerPassword
from CoreFoundation import (NSURL)
copyPassword = "12345678" # Password for copying and printing
openPassword = copyPassword # Password to open the file.
# Set openPassword as '' to allow opening with no password.
def encrypt(filename):
filename =filename.decode('utf-8')
if not filename:
print 'Unable to open input file'
sys.exit(2)
shortName = os.path.splitext(filename)[0]
outputfile = shortName+" locked.pdf"
pdfURL = NSURL.fileURLWithPath_(filename)
pdfDoc = PDFDocument.alloc().initWithURL_(pdfURL)
if pdfDoc :
options = {
kCGPDFContextAllowsCopying: False,
kCGPDFContextAllowsPrinting: False,
kCGPDFContextOwnerPassword: copyPassword,
kCGPDFContextUserPassword: openPassword}
pdfDoc.writeToFile_withOptions_(outputfile, options)
return
if __name__ == "__main__":
for filename in sys.argv[1:]:
encrypt(filename)