Sample code for 30+ languages & platforms
Python Requires Chilkat v11.7.0+

Remove the Password and Encryption from a PDF

See more PDF Protection Examples

Demonstrates the removeEncryption operation, which saves the PDF with no encryption at all: no password, no restrictions. It needs owner rights, so the PDF is loaded with its owner password. As with every Protection operation, the change is applied when the file is written.

Chilkat Python Downloads

Chilkat2-Python
import sys
import chilkat2

success = False

# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

# The PDF used in this example is available at encrypted_user_password.pdf

pdf = chilkat2.Pdf()

# Removing the encryption needs owner rights: load with the owner password.
pdf.OwnerPassword = "owner-secret"
success = pdf.LoadFile("qa_data/pdf/encrypted_user_password.pdf")
if (success == False):
    print(pdf.LastErrorText)
    sys.exit()

json = chilkat2.JsonObject()
jsonOut = chilkat2.JsonObject()
success = pdf.Protection("getInfo",json,jsonOut)
if (success == False):
    print(pdf.LastErrorText)
    sys.exit()

print("encrypted, as loaded: " + str(jsonOut.BoolOf("loaded.encrypted")))
print("algorithm: " + jsonOut.StringOf("loaded.algorithm"))

success = pdf.Protection("removeEncryption",json,jsonOut)
if (success == False):
    print(pdf.LastErrorText)
    sys.exit()

print("will be saved encrypted: " + str(jsonOut.BoolOf("pending.encrypted")))

success = pdf.WriteFile("qa_output/minutes_unprotected.pdf")
if (success == False):
    print(pdf.LastErrorText)
    sys.exit()

# The result is an ordinary PDF that opens without a password.
reader = chilkat2.Pdf()
info = chilkat2.JsonObject()
success = reader.PreLoadCheck("qa_output/minutes_unprotected.pdf",info)
if (success == False):
    print(reader.LastErrorText)
    sys.exit()

print("encrypted: " + str(info.BoolOf("encrypted")))
success = reader.LoadFile("qa_output/minutes_unprotected.pdf")
if (success == False):
    print(reader.LastErrorText)
    sys.exit()

print("pages: " + str(reader.NumPages))

# Sample output:

# encrypted, as loaded: True
# algorithm: rc4-128
# will be saved encrypted: False
# encrypted: False
# pages: 1