#oracle #plsql #pdf-generation
#Oracle #plsql #pdf-генерация
Вопрос:
Есть ли какой-либо способ создать PDF-файл с паролем, спроектированный с помощью PL / SQL, без стороннего jar
Комментарии:
1. Нет. PL / SQL не может изначально создавать файлы PDF без использования какого-либо стороннего программного обеспечения / дополнений.
2. ОК. Доступен ли какой-либо бесплатный пакет, такой как as_pdf3?
3. Вы пробовали as_pdf3? Похоже, что это было какое-то время, но, насколько я могу судить, не обновлялось в последнее время. Я понятия не имею, работает ли он с текущими версиями Oracle или поддерживает ли он защиту паролем (хотя я не вижу никаких доказательств того, что это так).
4. Да, я работаю над этим проектом, используя as_pdf3. Но я пробовал с другим пакетом plpdf, который работает нормально, но это пробная версия. Имя процедуры пакета — plpdf.SetProtection(…). Спасибо за ваш ответ.
Ответ №1:
Вы можете достичь этого также с помощью другого коммерческого пакета OraPdfProtect
Пример кода ниже:
DECLARE
-- input PDF BLOB read handle
pdf_file_handle BFILE;
-- input PDF BLOB
pdf_blob BLOB;
-- output encrypted PDF BLOB
encrypted_pdf_blob BLOB;
-- PDF permissions and password
user_password VARCHAR2(200);
owner_password VARCHAR2(200);
pdf_permissions INTEGER;
BEGIN
DBMS_LOB.createtemporary(pdf_blob, TRUE);
pdf_file_handle := BFILENAME('SSH_KEYS_DIR', '1.pdf'); -- directory name must be Upper case
-- load the data into a BLOB
DBMS_LOB.OPEN(pdf_file_handle, DBMS_LOB.LOB_READONLY);
DBMS_LOB.LoadFromFile( pdf_blob, pdf_file_handle, DBMS_LOB.GETLENGTH(pdf_file_handle) );
DBMS_LOB.CLOSE(pdf_file_handle);
user_password := 'test123';
owner_password := 'my password';
pdf_permissions := ORA_PDF_PROTECT.NOCOPY
ORA_PDF_PROTECT.NOASSEMBLY
ORA_PDF_PROTECT.NOMODIFYCONTENTS;
encrypted_pdf_blob := ORA_PDF_PROTECT.ENCRYPT_PDF(pdf_blob, user_password, owner_password, pdf_permissions);
END;
/