The EncryptPDFDocument128 method can be used to password protect a PDF document and restrict users to viewing, modifying or even printing the document. The EncryptPDFDocument128 function uses 128 bits encryption compatible with Adobe® Acrobat® 5 and higher.
BOOL EncryptPDFDocument128(LPCSTR FileName, LPCSTR Owner, LPCSTR User, DWORD Permissions)
FileName
Full path of PDF file to encrypt.
Owner
Owner password.
User
User password.
Permissions
Options to restrict users opening the document using the User password.
Permission Type |
Value (Hex) |
Value (Dec)* |
---|---|---|
No permission. |
0xFFFFF0C0 |
-3904 |
Enable Printing (low resolution) |
0xFFFFF0C0 + 0x000004 |
-3904 + 4 |
Enable document modification, including document assembly. |
0xFFFFF0C0 + 0x000008 |
-3904 + 8 |
Enable copying text and graphics, and support of accessibility to users with disabilities or for other purposes. |
0xFFFFF0C0 + 0x000010 |
-3904 + 16 |
Enable adding and changing notes, and fill-in existing interactive form fields (including signature fields). |
0xFFFF0C0 + 0x000020 |
-3904 + 32 |
Enable only fill-in existing interactive form fields (including signature fields). |
0xFFFF0C0 + 0x000100 |
-3904 + 256 |
Enable extraction text and graphics (in support of accessibility to users with disabilities or for other purposes) |
0xFFFF0C0 + 0x000200 |
-3904 + 512 |
Enable document assembly which includes: insert, rotate or delete pages and create bookmark or thumbnail images, but not document modification. |
0xFFFF0C0 + 0x000400 |
-3904 + 1024 |
Enable High-Quality Printing, but the if "Enable Printing" has to be enabled. |
0xFFFF0C0 + 0x000800 |
-3904 + 2048 |
(*) NOTE: Converting from HEX DWORD, unsigned and 32-bit unit of data
The return value is True if the document was encrypted, False otherwise.
In the case of the evaluation version, the passwords are always set to "aaaaaa" (Owner Password) and "bbbbbb" (User Password) and cannot be changed.
To combine multiple options, use hexadecimal 0xFFFFFFC0 or decimal -64 plus the values 4, 8, 16 or 32.
E.g. to enable both printing and adding notes, use hexadecimal 0xFFFFFFC0 or decimal -64 + 4 + 32 = -28. To disable all 4 options, use hexadecimal 0xFFFFFFC0 or decimal -64.
Two passwords are associated to an encrypted PDF document. The owner password is for the author of the document, and the user password for the destination or user of the document.
The owner password is optional and allows the author having this password to do any operation he/she wishes on this document, including modifying its security settings.
It can be blank, but the PDF document won' t be fully protected.
The user password is optional and can be one of the following:
User Password Option |
Description |
---|---|
A blank password |
The user is not prompted for a password when opening a document, but is restricted to the operations allowed by the author. |
The same password as the owner |
The user is prompted for a password and the author of the document will not be able to open this document as an owner to change its security settings. |
A password different from the owner |
The user will not be able to open the document unless he/she enters a valid password. When a valid password is entered, the document can be viewed but its usage is `restricted to the operations allowed by the author. |
The password dialog can be forced to appear if the SHIFT key is pressed while pressing the open bottom of the "File Open" dialog. This way, the application user can enter the owner password even if the user password is blank.
Enable changing the document content. When this option is checked, the user is allowed to change the contents of the PDF document.
Enable printing of document. The user cannot print the PDF document to any printer unless this option is checked.
Enable copying text and graphics from the document. When this option is checked, the user can copy parts of the text of graphics from the PDF document.
Enable adding notes or modifying form fields. The main body of the document cannot be changed but the user can add annotation or enter data in the form fields if there are any.
These options are managed by the tool used to view the document and not by the PDF Converter. Once a valid password is entered, it is up to the viewer or editor to make sure that these security settings are respected.
// PDF Converter Cpp.cpp : Defines the entry point for the console application.
//
#include <Windows.h>
#include <string>
#include <iostream>
#include "CdIntf.h"
#pragma comment (lib, "CDIntf.lib")
using namespace std;
enum PERMISSIONS
{
NO_PERMISSION = 0xFFFFF0C0,
ENABLE_PRINTING = 0x4,
ENABLE_DOCUMENT_MODIFICATION = 0x8,
ENABLE_COPYING_TEXT_GRAPHICS = 0x10,
ENABLE_ADDING_CHANGING_NOTES = 0x20,
ENABLE_ONLY_FILL_IN = 0x100,
ENABLE_EXTRACTION = 0x200,
ENABLE_ONLY_ASSEMBLY = 0x400,
ENABLE_HIGH_QUALITY = 0x800
};
int main()
{
// Constants for Activation codes
#define strLicenseTo "Amyuni PDF Converter Evaluation"
#define strActivationCode "07EFCDAB0100010025AFF1801CB9441306C5739F7D452154D8833B9CECBA2ADE79E3762A69FFC354528A5F4A5811BE3204A0A439F5BA"
// The SetLicenseKey method should be called after creating an object of type
// CDIntfEx.Document to activate the advanced methods that require the object
// activation code to work properly
SetLicenseKeyA(strLicenseTo, strActivationCode);
// Encrypt document
EncryptpdfDocument128( "c:\\temp\\test.pdf", "owner123", "user123", PERMISSIONS::NO_PERMISSION);
return 0;
}