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

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

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

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

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

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

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

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

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

Vipnet cryptofile

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

Работа с бумагами осуществляется по 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. Пересылает (если необходимо) нужному адресату. Или отправляет ему ссылку на созданный таким образом документ.

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

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

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

Читайте также:  Ошибка 0xc0000428 в Windows 10 при запуске: как исправить?

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

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

  • в выбранном файле 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. Добавить в палитру штампов подпись и печать. Для этого нужно сначала перейти в раздел Палитра штампов.

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

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

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

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

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

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

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

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

Оцените статью
ЭЦП Эксперт
Добавить комментарий