Как я могу автозаполнить форму PDF в Django/Python? [закрытый]

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

57
задан MikeN 11 December 2009 в 10:12
поделиться

2 ответа

Reportlab отлично подходит, если вы создаете очень динамичные PDF-файлы и вам нужно программно управлять всем этим: данными и макетом.

Чтобы просто заполнить формы в существующих PDF-файлах, reportlab слишком много, и вам, по сути, придется перестраивать PDF-файл с нуля в reportlab, а не просто брать PDF-файл с уже созданной формой.

PDF-формы работают с данными FDF . Я портировал библиотеку PHP FDF на Python некоторое время назад, когда мне приходилось это делать, и выпустил ее как fdfgen . Я использую это для создания файла fdf с данными для формы, затем использую pdftk , чтобы поместить fdf в форму PDF и сгенерировать вывод.

Весь процесс работает следующим образом:

  1. Вы (или дизайнер) разрабатываете PDF-файл в Acrobat или чем-то еще, помечаете поля формы и записываете имена полей (я не уверен, как именно это делается; наш дизайнер выполняет этот шаг). Допустим, в вашей форме есть поля «имя» и «телефон».
  2. Используйте fdfgen для создания файла FDF:

     from fdfgen import forge_fdf
    fields = [('имя', 'Джон Смит'), ('телефон', '555-1234')]
    fdf = forge_fdf ("", поля, [], [], [])
    fdf_file = open ("data.fdf", "w")
    fdf_file.write (fdf)
    fdf_file.close ()
    
  3. Затем вы запускаете pdftk для объединения и сглаживания:

     pdftk form.pdf fill_form data.fdf output output.pdf flatten
    

    и заполненный, сплющенный (что означает, что больше нет редактируемых полей формы) pdf будет в output.pdf.

Это немного сложно, и установка pdftk может быть проблемой (требуется стек java и в Ubuntu 9.10 есть ошибки, которые необходимо обойти), но это самый простой процесс, который мне удалось придумать, и рабочий процесс удобен (то есть наши дизайнеры могут вносить все изменения макета в PDF-файл, который они хотят, и пока они не меняют имена полей, я могу вставить новое, и все будет работать).

Прошу прощения за отсутствие документации по fdfgen. forge_fdf () - единственная функция, которая вам может понадобиться, и у нее есть строки документации для объяснения аргументов. Просто у меня никогда не было времени, чтобы сделать с ним больше.

76
ответ дан 7 November 2019 в 06:08
поделиться

Попробуйте reportlab .

Также обратите внимание на Вывод PDF-файлов .


Edit

У меня была другая мысль (но это не поможет, если у вас уже есть файлы PDF, а мне нравится @ thraxil's ответьте лучше).

Ранее в этом году я работал над проектом, в котором я сгенерировал «сертификаты об окончании» курсов повышения квалификации. Один из аспектов, на который я обратил внимание, - это попытка создать PDF-файл непосредственно из веб-страницы с соответствующим стилем (что-то вроде серверной "

Идея состоит в том, что вы используете механизм шаблонов django, чтобы собрать страницу, содержащую все, что вы хотите (включая изображения), передать ее URL-адрес в wkhtmltopdf, получить результат и вернуть его пользователю.

Мне понравился этот подход, потому что он действительно прост в реализации (просто откройте канал), вам не нужно беспокоиться о том, чтобы исходные файлы PDF оставались доступными для сервера, и вы можете перепроектировать файлы PDF, изменив HTML.

Идея состоит в том, что вы используете механизм шаблонов django, чтобы собрать страницу, содержащую все, что вы хотите (включая изображения), передать ее URL-адрес в wkhtmltopdf, получить результат и вернуть его пользователю.

Мне понравился этот подход, потому что он действительно прост в реализации (просто откройте канал), вам не нужно беспокоиться о том, чтобы исходные файлы PDF оставались доступными для сервера, и вы можете перепроектировать файлы PDF, изменив HTML.

и вы можете изменить дизайн PDF-файлов, изменив HTML.

и вы можете изменить дизайн PDF-файлов, изменив HTML.

5
ответ дан 7 November 2019 в 06:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: