У меня есть ebook в слове, что я конвертирую в PDF, прежде чем распространять свои клиенты. Я бы хотел динамически вставить свой адрес электронной почты во все ссылки в ebook, чтобы они могли получать доступ к содержимому только для членов на моем сайте, и я хотел бы сделать это «на лету» в рамках процесса загрузки книги.
Я кратко посмотрел на http://us.php.net/pdf и FPDF, но мне было интересно, какую конкретную технику я буду использовать для вставки этих данных.
Я думал, что я вставляю строку токена электронной почты, в которой я хочу отправить адрес электронной почты, а затем использовать некоторую функцию для обновления этих токенов в документе PDF.
Может кто-то указать мне верное направление? У меня есть опыт работы с PHP, но не с редактированием / созданием PDF-документов с php.
EDIT: Да, этот коммерческий скрипт http://www.setasign.de/products/pdf-php-solutions/setapdf-linkreplacer/ делает именно то, что мне нужно.
Пока это похоже на то, что это лучший выбор:
http://www.setasign.de/products/pdf-php-solutions/setapdf-linkreplacer/
Пытаясь использовать ее, она обновит сообщение с результатами.
вы можете сделать это с расширением FPDI для FPDF http://www.setasign.de/products/pdf-php-solutions/fpdi/
он позволяет fpdf импортировать существующие файлы PDF, хотя я не уверен, как можно заменить ссылки.
Я бы сказал, что ваш лучший снимок – это сгенерировать все это в php или просто сохранить его в html, заменить ссылки в html, а затем конвертировать html в pdf.
Без использования Adobe LiveCycle Designer самым простым способом создания пользовательского PDF является использование файла FDF. Существует множество способов сделать это, одним из которых является загрузка двоичных файлов из Adobe и их установка на ваш сервер. Но ничто из этого действительно не нужно. Все, что вам нужно – это pdf с заполняемыми формами и простым скриптом, который создает и FDF-файл. FDF просто содержит данные, которые необходимо заполнить, и указатель на файл pdf, который нужно заполнить. Я использую это для наших расписаний на работе. Данные попадают в веб-форму, но должны выходить статично и уродливо и использовать бумагу от 30 лет назад. Вот как будет выглядеть ваш файл fdf (как с кодом, так и с исходным кодом):
$file = "http://www.example.com/blankpdfform.pdf"; $data = "%FDF-1.2\n%âãÏÓ\n1 0 obj\n<< \n/FDF << /Fields [ "; foreach($datafields as $field => $val) { $data.='<< /T ('.$field.') /V ('.trim($val).')>> '; } $data.="] \n/F (".$file.") /ID [ <".md5(time()).">\n] >>". " \n>> \nendobj\ntrailer\n". "<<\n/Root 1 0 R \n\n>>\n%%EOF\n";
Конечным результатом является:
%FDF-1.2\n%âãÏÓ\n1 0 obj\n<< \n/FDF << /Fields [<< /T (email) /V (email@address.com)>> /F ("http://www.example.com/blankpdfform.pdf") /ID [ <"SomeUniqueID"> ] >> \nendobj\ntrailer<< /Root 1 0 R >> %%EOF
Если у вас есть шаблон PDF с токеном электронной почты, хранящимся в файле на веб-сервере, вы можете сделать это довольно легко. Сначала вам нужно прочитать в файле с помощью PHP. Вы можете сделать это, используя метод file_get_contents. Затем используйте str_replace, чтобы заменить токен электронной почты фактическим адресом электронной почты. Наконец, подайте файл с правильным типом содержимого.
$pdf = file_get_contents( 'template.pdf' ); $pdf = str_replace( '__EMAIL__TEMPLATE__', $userEmail, $pdf ); header( 'Content-type: application/pdf' ); print $pdf;
Ссылки Doc: http://ca2.php.net/manual/en/function.file-get-contents.php http://ca2.php.net/manual/en/function.str-replace.php
(Я на самом деле не пробовал это, и вы можете столкнуться с некоторыми проблемами, поскольку PDF является двоичным форматом, но теоретически он должен работать …)