Lua Requires Chilkat v11.7.0+
Lua
Extract Text from a Password-Protected PDF
See more PDF Text Extraction Examples
Demonstrates extracting text from a PDF that requires a password to open. The PDF loads without the password (its structure can be read), but the "text" operation fails because the content cannot be decrypted; "assess" reports that a password is required. With the UserPassword property set before loading, extraction works normally.Chilkat Lua Downloads
local chilkat = require("chilkat")
-- This example requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
-- The PDF used in this example (user password: secret) is available at encrypted_user_password.pdf
local pdf = chilkat.Pdf.new()
local json = chilkat.JsonObject.new()
local jsonOut = chilkat.JsonObject.new()
-- The PDF loads without its password: the file's structure is readable, so properties such as
-- NumPages and the security settings are available...
local success = pdf:load_file("qa_data/pdf/encrypted_user_password.pdf")
if not success then
print(pdf.last_error_text)
return
end
-- ...but the content cannot be decrypted, so extracting text fails.
success = pdf:extract_text("text", json, jsonOut)
if not success then
print("Cannot extract: " .. pdf.last_error_text)
end
-- "assess" still works: it reports that a password is required and nothing else.
success = pdf:extract_text("assess", json, jsonOut)
if not success then
print(pdf.last_error_text)
return
end
print("passwordRequired: " .. tostring(jsonOut:bool_of("quality.passwordRequired")))
print("rating: " .. jsonOut:string_of("quality.rating"))
-- Set the password and load again.
pdf.user_password = "secret"
success = pdf:load_file("qa_data/pdf/encrypted_user_password.pdf")
if not success then
print(pdf.last_error_text)
return
end
success = pdf:extract_text("text", json, jsonOut)
if not success then
print(pdf.last_error_text)
return
end
print(jsonOut:string_of("text"))
-- Sample output:
-- Cannot extract: ChilkatLog:
-- ExtractText:
-- ...
-- The PDF is encrypted and could not be opened (wrong or missing password); its text cannot be read.
-- ...
-- passwordRequired: true
-- rating: none
-- Board Minutes (Confidential)
--
-- The board met on 3 November 2026. Present: the chair, the treasurer and four members. The treasurer reported that spending for the season came in under budget.
--
-- The meeting closed at 8.45 p.m.