Вставить подпись в pdf или как спасти деревья / Хабр

Вставить подпись в pdf или как спасти деревья / Хабр Электронная цифровая подпись

Что нужно для подписания электронного документа в формате pdf?

Первое, что понадобится — отформатированный, проверенный документ. Обязательно вычитайте его на наличие ошибок, опечаток, перепроверьте все цифры, наименования, регистрационные номера.

После визирования документа с помощью ЭП вносить в него изменения нельзя, так как это будет уже другой документ, который надо будет подписывать заново

Также понадобятся:

  • Действующий сертификат электронной подписи, выданный соответствующим органом;
  • Программное обеспечение для добавления ЭП в документ.

ПО для добавления цифровой подписи бывает разным, поскольку предназначено для работы с различными типами файлов и текстовых документов.
Поэтому нужно правильно подобрать программу, подходящую для работы с PDF.

Также следует понимать, что есть разница между Adobe Reader и Acrobat. Хотя оба продукта позволяют просматривать PDF файлы, редактировать их можно исключительно с помощью пакета Adobe Acrobat. Распространяется он на платной основе. Поэтому для работы с ЭП необходимо купить лицензию.

Vipnet cryptofile

Бесплатное программное приложение позволяет подписывать архивы, ставить ЭЦП на изображениях, таблицах, партнерских соглашениях, текстовых файлах. Недостатком ViPNet является возможность добавления только одного электронного оттиска.

Читайте также:  Esmart Token пин код по умолчанию

Работа с бумагами осуществляется по cледующему плану:

  • найти нужный документ в главном списке;
  • правой кнопкой мыши вызвать меню и выбрать опцию «Подписать»;
  • получить на выходе файл с автоматически проставленной подписью и расширением .sig.

Виды электронных подписей

ЭП проставляют на электронные бумаги при подаче заявлений для участия в торгах и закупках, оформлении обращений в государственные структуры, обмене партнерскими соглашениями, переписке с законодательными органами. В России применение оттиска регулируется ФЗ «Об электронной подписи» от 06.04.2021.

Используются три варианта визирования:

Вставить подпись в pdf или как спасти деревья

В век перехода к цифровому документообороту появляются курьёзные случаи когда цифровизация вроде есть, а вроде и нет. Одним из таких случаев оказалась ситуация, когда сотрудники распечатывали договор, присланный на электронную почту, ставили на распечатке факсимиле или печать, затем сканировали и отправляли обратно.

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

Существует множество программ для работы с pdf, но вставка изображений в них либо платная, либо лимитированная. Текущая же задача требует безлимитной возможности редактирования документов и максимально простого интерфейса, чтобы программой мог сходу пользоваться любой человек без какого-либо обучения.

Таким образом я решил написать свое приложение для вставки изображений в pdf, отвечающего всем указанным выше требованиям. А так-как размер приложения и скорость работы (в пределах разумного!) не являются ключевыми, мне представилось оптимальным написать приложение на python после чего завернуть его в исполняемый файл.

Итак, приложение. Для создания графического интерфейса использовался модуль tkinter, так-как он осваивается “на лету”, а внешний вид приложения был пожертвован в угоду скорости разработки. Таким образом получилось нечто такое:

Вставить подпись в pdf или как спасти деревья / Хабр

Окно состоит всего из двух основных элементов: меню с кнопками и холста на котором будет размещено изображение документа. Так-как холст не может отображать pdf, для начала документ необходимо конвертировать в объект изображения. Для этих целей удобно использовать обертку над библиотекой poppler – pdf2image, которая имеет команду convert_from_path получающая путь к pdf файлу и возвращающая объект изображения. Далее, для удобства использования, изображение сжимается для размера холста (я выбрал размер 768*768 пикселей) по формуле коэф. масштабирования = размер холста / max(длина изображения, ширина изображения). После чего на холст добавляется изображение печати, которое можно перетаскивать по холсту. Таким образом получилось следующая картина:

Вставить подпись в pdf или как спасти деревья / Хабр

Теперь переходим к сохранению готового документа. Изначально была идея просто вставить картинку в исходный pdf файл и для этих целей был найден модуль reportlab, но в ходе экспериментов с ним выяснилось, что pdf файлы имеют несколько иную координатную сетку, начинающуюся с левого нижнего угла, но при этом, некоторые документы имели сетку с началом в левом верхнем углу. Чтобы глубоко не вникать в особенности реализации pdf файлов, было решено просто конвертировать изображение обратно в pdf, благо это умеет делать модуль PIL, который уже использовался, для масштабирования изображений ранее. В остальном сохранение происходит по следующему сценарию: берется исходное изображение (не масштабированное), с помощью функции tkinter-а ‘coord’ находятся текущее координаты печати, координаты умножаются на коэф. масштабирования и печать размещается на документе (функция paste класса PIL Image). Таким образом документы не теряют в качестве и ни в чем не уступают отсканированным.

На этом этапе приложение было готово к работе, но возникала проблема с отсутствием python на пользовательских компьютерах. Для решения этой задачи использовался pyinstaller, который заворачивает код и интерпретатор python в один исполняемый файл. Здесь возникает только один нюанс: так-как приложение для открытия pdf требует установленной библиотеки poppler, нужно либо упаковать библиотеку внутрь exe файла, либо положить рядом с exe файлом. И в первом и во втором случае если собирать приложение с командой -noconsole путь до библиотеки не находится, так что пришлось оставить висящее окошко консоли при работе с приложением. На этом все, код приложения:

from tkinter import *
from tkinter import filedialog
from PIL import ImageTk, Image
from pathlib import Path
from pdf2image import convert_from_path
import os
canvas_size = 768
document_type = (("document file", "*.jpg *.jpeg *.pdf"), ("pdf files", "*.pdf"), ("image files", "*.jpg *.jpeg"))
sign_type = (("stamp file","*.png"),)
class DocCanv(Canvas):	#Document	DocumentList=None	DocumentImage = None	DocResize = 1	DocImgLink = None	CurentPage=0	#Signature	SignImage = None	SignResize = DocResize	SignImgLink = None	SignObj = None	def DocFile(self, use_in_func=False):	if use_in_func is False:	doc_path = filedialog.askopenfilename(filetypes=document_type)	if (Path(doc_path).suffix).lower() == '.pdf':	try:	#try to use poppler from pyinstaller bundle temp directory	self.DocumentList=convert_from_path(doc_path, poppler_path = os.path.join(sys._MEIPASS, "poppler") )	except:	#reserve for poppler	self.DocumentList=convert_from_path(doc_path, poppler_path = "poppler" )	self.DocumentImage=self.DocumentList[0]	else:	self.DocumentImage = Image.open(doc_path)	self.DocumentList = [self.DocumentImage]	(width, height) = self.DocumentImage.size	self.DocResize = canvas_size / max(height, width)	self.DocImgLink=ImageTk.PhotoImage( self.DocumentImage.resize((int(width * self.DocResize), int(height * self.DocResize)), Image.ANTIALIAS))	self.create_image(0, 0, image=self.DocImgLink, anchor=NW)	def SignFile(self, sign_path=None):	if self.SignImage is not None:	self.MergeFile()	self.DocFile(True)	if sign_path is None:	sign_path = filedialog.askopenfilename(filetypes = sign_type)	self.SignImage = Image.open(sign_path)	(width, height) = self.SignImage.size	self.SignResize=self.DocResize	self.SignImgLink=ImageTk.PhotoImage( self.SignImage.resize((int(width * self.SignResize), int(height * self.SignResize)), Image.ANTIALIAS))	self.SignObj = self.create_image(0, 0, image=self.SignImgLink, anchor=NW)	def MoveSign(self, event):	self.coords(self.SignObj, event.x, event.y)	def ResizeSign(self, event):	if event.delta > 0:	self.SignResize = self.SignResize 0.1	else:	self.SignResize = self.SignResize - 0.1	(width, height) = self.SignImage.size	self.SignImage.resize((int(width * self.SignResize), int(height * self.SignResize)), Image.ANTIALIAS)	self.SignImgLink=ImageTk.PhotoImage( self.SignImage.resize((int(width * self.SignResize), int(height * self.SignResize)), Image.ANTIALIAS) )	x, y = self.coords(self.SignObj)	self.SignObj = self.create_image(x, y, image=self.SignImgLink, anchor=NW)	def MergeFile(self):	sign_coords =self.coords(self.SignObj)	sign_coords = [(int)(x / self.DocResize) for x in sign_coords]	(width, height) = self.SignImage.size	width=int((width * self.SignResize)/self.DocResize)	height=int((height * self.SignResize) / self.DocResize)	ResizedSign=self.SignImage.resize((width,height), Image.ANTIALIAS)	self.DocumentImage.paste(ResizedSign, box=sign_coords , mask=ResizedSign.convert('RGBA'))	def SaveFile(self,f_type="jpg"):	try:	self.MergeFile()	except:	pass	SavePath=filedialog.asksaveasfilename()	if (SavePath.split('.'))[-1]!=f_type:	SavePath=(SavePath.split('.'))[0] '.' f_type	if f_type == 'pdf':	self.DocumentList[0].save(SavePath,save_all=True,append_images=self.DocumentList[1:])	else:	self.DocumentImage.save(SavePath)	def NextPage(self):	try:	self.MergeFile()	self.DocumentList[self.CurentPage]=self.DocumentImage	except:	pass	if (len(self.DocumentList)-1) > self.CurentPage:	self.CurentPage =1	self.DocumentImage=self.DocumentList[self.CurentPage]	self.SignImage = None	self.SignImgLink = None	self.SignObj = None	self.DocFile(True)	def PrevPage(self):	try:	self.MergeFile()	self.DocumentList[self.CurentPage]=self.DocumentImage	except:	pass	if self.CurentPage>0:	self.CurentPage-=1	self.DocumentImage=self.DocumentList[self.CurentPage]	self.SignImage = None	self.SignImgLink = None	self.SignObj = None	self.DocFile(True)
root = Tk()
root.title("Documents signer")
DocCan = DocCanv(root, width=canvas_size, height=canvas_size)
DocCan.pack(side='right', fill=BOTH, expand=1)
MenuFrame = Frame(root, width=120, bg='gray22')
MenuFrame.pack(side='right', fill=Y)
OpenDocBtn = Button(MenuFrame, text='Open Document',command=DocCan.DocFile)
OpenDocBtn.pack(fill=X, padx=5,pady=3)
SignDocBtn = Button(MenuFrame, text='Open sign',command=DocCan.SignFile)
SignDocBtn.pack(fill=X, padx=5,pady=3)
SavePDFBtn = Button(MenuFrame, text='Save as pdf',command = lambda arg1=DocCan, arg2='pdf': DocCanv.SaveFile(arg1,arg2))
SavePDFBtn.pack(fill=X, padx=5,pady=3)
SaveJPGBtn = Button(MenuFrame, text='Save as jpg',command = lambda arg1=DocCan, arg2='jpg': DocCanv.SaveFile(arg1,arg2))
SaveJPGBtn.pack(fill=X, padx=5,pady=3)
NextPageBtn = Button(MenuFrame, text='Next page',command = DocCan.NextPage)
NextPageBtn.pack(fill=X, padx=5,pady=3)
PrevPageBtn = Button(MenuFrame, text='Prev page',command = DocCan.PrevPage)
PrevPageBtn.pack(fill=X, padx=5,pady=3)
DocCan.bind("<B1-Motion>", DocCan.MoveSign)
DocCan.bind("<MouseWheel>", DocCan.ResizeSign)
root.mainloop()

Ссылка на git с готовым приложением

Вставляем подпись и печать через movavi pdf-редактор

Наиболее удобный способ вставки подписи и печати в документы формата pdf, это использование платной программы Movavi PDF-редактор.

Обзор программы Movavi PDF-редактор можно посмотреть в обзорной статье.

Как добавить подпись и печать с помощью Movavi PDF-редактора?

Использование веб-сервисов

Проставить ЭП в файлах можно с помощью онлайн-сервисов в интернете. Многие пользователи выбирают Контур Крипто, который позволяет бесплатно проверять и генерировать оттиски онлайн, расшифровывать и зашифровывать файлы. Визировать информацию можно в любом формате, по отдельности, пакетом или архивом rar.

Доступ к сервису открывается после регистрации и автоматической установки на компьютер для выполнения преобразований.

Подписать файлы пдф удобно в таком порядке:

  • загрузка подлежащего заверению документа;
  • выбор доступного сертификата;
  • создание ЭЦП онлайн;
  • визирование с помощью соответствующей опции, автоматическое формирование папки с готовым файлом, которому присвоено расширение .sig.

Сервер позволяет отправлять завизированные бумаги и предоставлять адресату ссылку на сохраненную в Крипто Контур папку. Оригинал ЭД, файла, сертификата с подписью и инструкцией по ее проверке можно передать по email.

Формирование и получение заверенных файлов pdf в любой из выбранных программ происходит оперативно. Наличие дополнительных опций и допустимый объем визируемых документов зависят от выбора версии и типа программного помощника.

Как подписать pdf электронной подписью

Если Вы пришли ко мне на блог с таким вопросом как подписать пдф, то спешу Вас огорчить, для того что бы сделать электронную подпись PDF документы Вам необходимы след. программное обеспечение:

  • Acrobat Reader PRO ( или Acrobat Pro DC)

Но тут сразу появляется проблема, потому как данное ПО платное, но опять же есть несколько выходов:

Как подписать электронной подписью документ pdf

Преимущества ЭП – быстрый обмен файлами, автоматизация их обработки, снижение издержек на подготовку и пересылку бумаг. ЭП используется при заверении файлов в формате pdf – скан-копий, презентаций, иллюстраций, таблиц, текстовой и проектной документации.

Для того чтобы заверить подобную информацию, потребуются:

  • подпись в электронном формате;
  • финальная редакция документа, которую запрещено корректировать после визирования;
  • действующий квалифицированный сертификат;
  • ПО, позволяющее визировать (плагин для pdf, онлайн-сервис, КриптоАРМ).

После подбора и внедрения программного обеспечения в контекстном меню появляется активный пункт «Мастер подписания». Следуя подсказкам в нем, можно выполнить визирование.

Как подписать эцп документ pdf

Теперь переходим непосредственно к самой инструкции, о том как я подписываю документы pdf эцп, сразу говорю что я буду описывать процедуру на windows 7 Ultimate x64 (но данная процедура идентичная и на других версиях windows) Поехали:

Как создать электронную подпись для pdf?

Использовать для ЭП документы в формате PDF удобно, поскольку пакет программ для работы с файлами включает встроенный плагин КриптоПро PDF. Он позволяет добавлять в документ криптографические записи без необходимости использования сторонних программ.

Алгоритм действий по добавлению ЭП следующий:

После этого документ становится официальным, то есть заверенным вашей ЭП.

Какие документы подписываются эцп

Бумаги с электронной подписью могут применяться в любых правоотношениях, если на это не предусмотрен прямой запрет со стороны законодательства РФ.

Проставить ЭЦП на бумаги требуется в следующих случаях:

  1. Сдача отчетности в ПФР, ФНС, ФСС, Росстат. Дистанционная передача деклараций экономит время и позволяет автоматически проверить отчеты на ошибки.
  2. Организация ЭД. Может быть налажена внутри компании и между деловыми партнерами. В статье 9 ФЗ №402 «О бухгалтерском учете» отмечено, что в электронном виде с ЭП можно создавать любой первичный бухгалтерский бланк.
  3. Государственные услуги. Граждане имеют право визировать заявления через портал госуслуг, пользоваться персональным кабинетом на сайте ФНС, оформлять кредиты.
  4. Обращение в арбитражный суд. Согласно АПК РФ, завизированные электронные файлы заменяют бумажные.

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

Бланки с изображением герба РФ должны быть отпечатаны в типографии и подписаны лично. Применение ксерокопий и электронных форм не допускается. Кадровые решения, связанные с персональной информацией, также оформляют только на бумаге.

Криптоарм

Универсальная программа разработана для шифрования и расшифровывания информации, проверки электронных ключей, работы с криптопровайдерами по алгоритмам, соответствующим требованиям ФСБ. Стартовая версия, где можно завизировать документы pdf, Word и Excel, предоставляется бесплатно.

В стандартной и базовой вариациях за дополнительную плату предусмотрены:

  • возможность генерации ЭП, проверки ее корректности;
  • шифрование и дешифровка файлов произвольных форматов;
  • поддержка модулей усовершенствованной подписи и другие опции.

Визирование с помощью программы осуществляется последовательно:

Мнения пользователей

Пользуетесь другими (более удобными) способами добавления подписи и печати в документы ПДФ? Поделитесь, пожалуйста, с нами своим опытом в комментариях ниже!

Онлайн-сервисы вставки подписей и печатей в пдф

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

Основная суть работы таких сервисов следующая. Пользователь проделывает простые действия:

  1. Загружает свой документ, а также заранее отсканированные файлы с подписью и печатью в онлайн-сервис;
  2. Вставляет подпись и печать в нужные места документа;
  3. Сохраняет измененный файл к себе на компьютер;
  4. Пересылает (если необходимо) нужному адресату. Или отправляет ему ссылку на созданный таким образом документ.

Плюс: не нужно устанавливать дополнительные программы на компьютере.

Минусы: во многих подобных сервисах требуется регистрация. Также документы, сканы подписи и печати загружаются на сторонний сервис и хранятся там. А это в какой-то степени лишает конфиденциальности.

Именно по второй причине я лично не пользуюсь онлайн-сервисами для вставки подписей в документы. Поэтому какие-то конкретные сервисы рекомендовать не стану. Но, если вам интересен такой вариант, то в любой поисковой системе наберите выражение Вставить подпись в ПДФ онлайн. И приглядитесь к одним из первых вариантам выдачи.

Подписание с помощью цифрового удостоверения

Алгоритм визирования подразумевает последовательное выполнение следующих действий:

  • в выбранном файле pdf перейти в раздел «Инструменты» и найти подпункт «Сертификаты»;
  • открыть блок и выбрать «Поставить цифровую подпись»;
  • в появившемся окне выбрать сертификат пользователя;
  • создать удостоверение для подписи, которое следует хранить в магазине сертификатов Windows;
  • проверить правильность введенной информации;
  • вставить подпись, следуя подсказкам.

Подписываем с помощью программного комплекса криптопро csp

Первоначально следует установить на персональный компьютер Acrobat Adobe Reader, модуль КриптоПро pdf, сертификат владельца ЭП и удостоверяющего центра.

Чтобы подписать pdf-файл в программе, следует сделать следующее:

  • открыть pdf-файл (допустимый размер – до 100 Мб);
  • перейти во вкладку «Инструменты» и выбрать ярлык «Сертификаты»;
  • нажать на опцию «Поставить цифровую подпись», выбрать область ее расположения;
  • выбрать цифровое удостоверение для подписи, нажать «Продолжить»;
  • выполнить предварительный просмотр и подписать;
  • просмотреть сообщение системы о выполнении операции.

Служба отслеживания и пересылки позволяет передавать подписанные данные и получать уведомления об их просмотре адресатом. Отправить файл можно из КриптоПро – в этом случае партнер получит ссылку. Ее можно открыть в любой программе, работающей с отсоединенными ЭП.

Получение документов pdf, подписанных другими пользователями с помощью adobe sign

«Облачный» сервис Adobe Sign заменяет процесс традиционного подписания бумаг на электронный. Инструмент «Отправить на подпись» позволяет быстро просматривать письма от партнеров, визировать их с помощью веб-браузера, мобильного устройства. Дополнительно идет отслеживание всех этапов, вплоть до информирования адресата по электронной почте о передаче файла с просьбой о его визировании.

После сбора подписей стороны получают готовый pdf-документ. При его случайной утере можно обратиться в «облачное» приложение Adobe Content Cloud, где он хранится.

Программы для добавления подписей и печатей в pdf

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

Из тех, которые уже рассматривались на нашем сайте, и с помощью которых можно вставить подпись и печать в ПДФ документ, можно отметить две: одну бесплатную и одну платную.

Специальные программы

Программное обеспечение КриптоАРМ и ViPNet CryptoFile позволяет быстро подписывать и отсылать файлы pdf. Сервисы отличаются по функциональности и установке, но при этом являются простыми и понятными в использовании.

Ставим подпись и печать с помощью pdf-xchange viewer

PDF-XChange Viewer имеет бесплатную версию, в которой есть функционал, позволяющий вставлять подпись и печать в ПДФ документы. Конечно, этот функционал не такой удобный, как будет рассмотрено в следующей платной программе. Но всё же, он есть.

Обзор программы PDF-XChange Viewer можно посмотреть в отдельной статье.

Как добавить подпись и печать с помощью PDF-XChange Viewer?

Для этого нужно:

  1. Заранее сделать снимки подписи и печати.
  2. Сохранить снимки подписи и печати в отдельные файлы;
  3. Открыть с помощью программы нужный документ;
  4. Добавить в палитру штампов подпись и печать. Для этого нужно сначала перейти в раздел Палитра штампов.

И создать новую коллекцию из нужных изображений.

А далее уже из коллекции добавлять в нужные места документа подпись и печать.

Данный способ добавления подписи в ПДФ документ прост. Но он требует еще определенных действий. Ведь если отправить файл таким образом, то поставленные штампы останутся доступными для перемещения и изменения размеров.

Чтобы зафиксировать их на установленных местах и с заданными размерами, необходимо:

  • Нажать на добавленную подпись правой кнопкой мыши;
  • Выбрать Свойства;
  • В следующем окне перейти в Дополнительно;
  • И отметить галочкой Заблокировано.

Есть еще один важный нюанс! Если нужно распечатать данный файл вместе с подписью и печатью, то при распечатывании в параметрах необходимо выбрать Документ и штампы.

Иначе подпись и печать просто не будут напечатаны!

Если вы воспользуетесь таким способом и отправите на печать подготовленный документ своему клиенту, то можете переслать ему и ссылку на эту статью. Таким образом он может тоже посмотреть эту подсказку и без проблем напечатать документ с подписью и печатью.

Оцените статью
ЭЦП Эксперт