Как удалить ограничения .pdf из PHP или JavaScript? - PullRequest
0 голосов
/ 22 января 2019

Я использовал qpdf для удаления .pdf ограничений, это можно использовать через php следующим образом:

shell_exec('qpdf --decrypt "'.$pdfName.'" unlocked.pdf');

Это хорошо работает на локальном хосте, но по соображениям безопасности его невозможно выполнить на общем веб-хостинге.

Так что я ищу другой способ сделать это без команд оболочки.

Есть ли какое-нибудь решение на языках PHP или JavaScript?

EDIT

PDF-файл, который я тестирую, не блокируется паролем, я знаю только то, что не могу скопировать с него текст, но после применения этой команды "qpdf --decrypt .." я могу это сделать.

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Вы можете использовать следующие репозитории в GitHub php-pdftk

Пример PHP-кода:

use mikehaertl\pdftk\Pdf;

$pdf = new Pdf('/path/my.pdf');

$pdf->allow('AllFeatures')      // Change permissions
    ->flatten()                 // Merge form data into document (doesn't work well with UTF-8!)
    ->compress($value)          // Compress/Uncompress
    ->keepId('first')           // Keep first/last Id of combined files
    ->dropXfa()                 // Drop newer XFA form from PDF
    ->dropXmp()                 // Drop newer XMP data from PDF
    ->needAppearances()         // Make clients create appearance for form fields
    ->setPassword($pw)          // Set owner password
    ->setUserPassword($pw)      // Set user password
    ->passwordEncryption(128)   // Set password encryption strength
    ->saveAs('new.pdf'); 
0 голосов
/ 30 января 2019

Все, что вам нужно, возможно с помощью PDF Reader Mozilla, написанного на JavaScript (PDF.js). Вы можете показать все PDF-файлы без ограничений на общем веб-хостинге. Я проверил его сейчас на предмет копирования текста, печати документов и других ограничений - вы можете делать все это без ограничений.

Только для пароля для чтения документа вам понадобится пароль, и я надеюсь, что вы понимаете, что удаление этого пароля невозможно с любым другим программным обеспечением, если пароль достаточно надежный. Вы также можете открыть все документы онлайн с паролем для открытия (если он есть), но все остальные ограничения будут пропущены. Я протестировал его с 256-битной длиной ключа из паролей владельца и пользователя.

DEMO

И если кто-то не понимает, что делает библиотека QPDF от OP (Original Poster), я нашел следующую информацию об этой библиотеке QPDF:

Защищенный PDF-файл имеет два типа паролей: ВЛАДЕЛЕЦ и ПОЛЬЗОВАТЕЛЬ.
Пароль ВЛАДЕЛЬЦА используется для обеспечения прав доступа.
Пароль USER используется для открытия файла PDF.
...
Вы можете расшифровать его, если он также защищен паролем USER, но вам нужно знать пароль.

Источник

С этой библиотекой вам не нужно , чтобы писать явно некоторый код, чтобы снять ограничения PDF. Устраняет ограничения (для пароля владельца) путем чтения из документа , автоматически . А в случае, если установлен пароль пользователя (для открытия PDF-файла), он показывает при считывании из документа диалог ввода этого пароля автоматически .

Вывод: Библиотека PDF.js и библиотека QPDF из OP делают одно и то же в случае ограничений.

Как начать

Просто откройте ссылку home site ниже и перейдите на сайт Getting Started (вы найдете эту возможность в верхней части страницы) - там вы найдете все инструкции для начало.

PDF.js - это проект с открытым исходным кодом (ссылка на GitHub).

На этом домашнем сайте вы найдете:

  • Информация о начале работы
  • Примеры (много примеров кода)
  • FAQ (ответы)
  • Описание API

Полезные ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...