Прикрепить файл к PDF с помощью клиентского JavaScript? - PullRequest
0 голосов
/ 05 ноября 2018

Как произвольный файл (например, XLSX) можно прикрепить / внедрить в файл PDF, используя только клиентский браузер JavaScript?

Если это имеет значение, пользователь дает XLSX с помощью кнопки входного файла и PDF, полученный от внешнего веб-сервиса и закодированный в base64.

Я не ищу полного решения (было бы замечательно, если бы оно существовало), но как бы вы подошли к этой проблеме на более высоком уровне

Файлы прикрепляются с использованием потоков двоичных файлов, как это выглядит в файле PDF:

32 0 obj
 <</Type /EmbeddedFile /Subtype /{mimetype} /Length 72>>
 stream
 {file data}
 endstream
 endobj

1 Ответ

0 голосов
/ 11 ноября 2018

Вы можете использовать JSPdf-библиотеку для этого случая. Вам нужно взять плагин JavaScript и плагин addImage исходные коды этой библиотеки, чтобы увидеть, как можно вложить файл. Я думаю, что исходный код плагина JavaScript более понятен для этого случая.

Я не ищу полного решения

Да, полное решение вы должны написать сами, потому что теперь эта библиотека не поддерживает пользовательское вложение файла.

Файлы прикрепляются с использованием потоков двоичных файлов, как это выглядит в файле PDF:

32 0 obj
<</Type /EmbeddedFile /Subtype /{mimetype} /Length 72>>
stream
{file data}
endstream
endobj

Да, вам нужно написать что-то подобное. Вы должны понимать, что вы должны написать код для чтения из файла PDF тоже.

Альтернативное решение

Но, если это слишком сложно или слишком много для вас, вам нужно подумать обо всем этом на стороне сервера. Вы можете отправить на сервер запрос, используя AJAX, и сервер сделает это и вернет вам новый PDF.

В этом случае вы можете редактировать сторону PDF-сервера с бесплатной библиотекой PHP, например, FPDI . С FPDI можно читать и редактировать документы PDF (для чтения PDF используйте метод createByFile()). FPDI является расширенной версией библиотеки FPDF , которая имеет плагин для вложений .

...