Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 07.11.2018
Сообщений: 130
Excel

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

26.05.2021, 09:53. Показов 3565. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, уважаемые! Реально ли осуществить такое действие через макросы? Эксель преобразуется в pdf, затем пользователь подписывает своей ЭЦП файл pdf и отправляет на почту это все уже автоматизировано. Так вот мне поставили задачу проверить подписан ли документ PDF ЭЦП пользователя перед отправкой....а как это сделать я вообще не могу придумать. Это вообще реально? буду рада любой помощи. Спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.05.2021, 09:53
Ответы с готовыми решениями:

Загруженный APK не подписан. Создайте файл с подписью
Как подписать приложение ?? в инете написано типо есть такой keytool , но я чета не нашел рабочей. может кто уже делал такое ??)

Встал в тупик с электронной подписью
Ребят, не нашел подходящую раздел для этой темы, поэтому решил написать тут! Может кто сталкивался с таким!? Вообщем сделал удаленный...

Поставить штамп, что pdf документ подписан
Скажите, как средствами c# поставить в pdf штамп/отметку, что pdf документ подписан и что для этого надо?

35
0 / 0 / 0
Регистрация: 07.11.2018
Сообщений: 130
26.05.2021, 13:30  [ТС]
Студворк — интернет-сервис помощи студентам
у меня ничего не происходит) при выполнении макроса
0
0 / 0 / 0
Регистрация: 07.11.2018
Сообщений: 130
26.05.2021, 13:45  [ТС]
вот например как через VBA узнать сколько весит вот этот файл
Вложения
Тип файла: pdf Иванов И.И._Анкета_21.pdf (379.1 Кб, 6 просмотров)
0
 Аватар для Narimanych
2753 / 1727 / 779
Регистрация: 23.03.2015
Сообщений: 5,452
26.05.2021, 13:57
Olesya-lisa89,

Цитата Сообщение от Olesya-lisa89 Посмотреть сообщение
у каждого пользователя стоит pdf
У вас что стоит?
0
0 / 0 / 0
Регистрация: 07.11.2018
Сообщений: 130
26.05.2021, 13:58  [ТС]
PDF-XChange Editor
0
 Аватар для Narimanych
2753 / 1727 / 779
Регистрация: 23.03.2015
Сообщений: 5,452
26.05.2021, 13:59
Обратитесь в раздел JS - кодинг PDF на JS...

Добавлено через 54 секунды
Olesya-lisa89,
Есть какой-нибудь несекретный документ с подписью?
Можете прислать?
0
0 / 0 / 0
Регистрация: 07.11.2018
Сообщений: 130
26.05.2021, 14:14  [ТС]
ну вот я разобралась как записать размер файла в ячейку))) теперь осталось, наверное, задать условие если файл равен или больше того, который не подписан, то тогда отправка?

Sub Размер()

Dim fsObj, filePointer, myFile
myFile = "" & Range("A1") & "_" & "Анкета" & "_" & Range("H6") & ".pdf"
Set fsObj = CreateObject("Scripting.FileSystemObject ")
If fsObj.FileExists(myFile) = True Then
Set filePointer = fsObj.GetFile(myFile)
Range("H7") = filePointer.Size

Else
MsgBox "Файл " & UCase(myFile) & " не найден."
End If


End Sub
0
 Аватар для Narimanych
2753 / 1727 / 779
Регистрация: 23.03.2015
Сообщений: 5,452
26.05.2021, 14:16
попробуйте вот это:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub MMM()
    Set AcroApp = CreateObject("AcroExch.App")
    Set theForm = CreateObject("AcroExch.PDDoc")
    FRM.Open ("path to your pdf file")' дорога к файлу
    Set jso = FRM.GetJSObject
    If jso.getField("Text1").Value <> "" Then ' здесь в вашем файле нужно посмотреть какой тектсбокс соответствует подписи... 
         MsgBox ("document signed")
    Else
        MsgBox ("Not signed")
    End If
    FRM.Close
    AcroApp.Exit
    Set AcroApp = Nothing
    Set theForm = Nothing
End Sub
0
0 / 0 / 0
Регистрация: 07.11.2018
Сообщений: 130
26.05.2021, 14:25  [ТС]
Ругается на Set AcroApp = CreateObject("AcroExch.App")
0
 Аватар для Narimanych
2753 / 1727 / 779
Регистрация: 23.03.2015
Сообщений: 5,452
26.05.2021, 14:34
Olesya-lisa89,

Замените на ваш application
Цитата Сообщение от Olesya-lisa89 Посмотреть сообщение
PDF-XChange Editor
0
малоболт
1328 / 510 / 213
Регистрация: 30.01.2020
Сообщений: 1,244
26.05.2021, 14:41
Цитата Сообщение от Olesya-lisa89 Посмотреть сообщение
теперь осталось, наверное, задать условие если файл равен или больше того, который не подписан, то тогда отправка?
Возможно это не будет решением и следует забыть о сравнении размеров файла. Насколько я увидел PDF Xchange спрашивает под каким именем сохранить подписанный файл. И не факт, что клиент сохранит под тем же именем, перезаписав исходный файл. Наоборот, вероятность того, что подписанный файл будет иметь другое имя существенно > 50%. И мы упрёмся в то, что сравнивать будем тёплое с мягким.
Хотя, конечно, если мы записали себе, что файл имеет одно имя + размер. А отправляется файл с совсем другим именем и размером - то конечно достаточно велика вероятность, что файл подписан и просто сохранён под другим именем. Хотя и не исключено, что это просто другой файл.
Я посмотрел на то, что делает с файлом PDF XChange в процессе подписания. В принципе возможно попробовать прочитать файл и найти тег /SIG, который вставляет PDF XChange. Если он есть - считаем, что отправляется подписанный файл. Это может снизить вероятность отправки неподписанного файла. Возможно, это имеет смысл добавить к проверкам в случае если и имя и размер отправляемого файла не соответствуют исходным, или данные об исходном файле не найдены.
Или попробовать использовать сам PDF-Xchange для проверки подписанности, как советует выше Narimanych.
0
0 / 0 / 0
Регистрация: 07.11.2018
Сообщений: 130
26.05.2021, 14:53  [ТС]
Пользователь будет сохранять всегда pdf под определенным именем-это фимилия инициалы_Заявление_№группы
по-другому ему НЕЛЬЗЯ сохранить(это прописано в коде), на это есть инструкция и пользователи знают что абы куда хочется и как хочется не сохранишь. Так что тут проблема отпадает. просто возник вопрос о проверке подписан или нет, потому что могут не подписать, а просто так отправить без подписи
0
0 / 0 / 0
Регистрация: 07.11.2018
Сообщений: 130
27.05.2021, 06:03  [ТС]
не получается(
0
малоболт
1328 / 510 / 213
Регистрация: 30.01.2020
Сообщений: 1,244
27.05.2021, 06:42
Цитата Сообщение от Olesya-lisa89 Посмотреть сообщение
не получается(
Ну дык, вы же файлы для примера не даёте. И сами их анализировать то ли не можете, то ли не хотите. Это значит, что должен найтись кто-то, кому окажется не лень поставить ненужную ему прогу PDF Xchange его комп, проделать подписание, потом проделать анализ файлов, написать на его основании код, и в конце выяснить, что ваши клиенты подписывают эти файлы не PDF Xchange, а Крипто Про или ещё чем-то другим.

Вот попробуйте функцию от дурака, который ночью всё вышеуказанное проделал.

В функцию передаётся ПОЛНЫЙ путь к файлу PDF. Функция возвращает True или False в зависимости от того, подписан ли файл с помощью PDF Xchange.

Примечание: Если файла не существует, или он не читается или ещё что-то не так , функция вернёт False.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Function IsPDFSigned(PDFfullpath)
  IsPDFSigned = False
  With CreateObject("Scripting.FileSystemObject").OpenTextFile(PDFfullpath, 1)
    Do Until .AtEndOfStream
       If Left(.readLine, 10) = "/Type /Sig" Then
         IsPDFSigned = True
         Exit Function
       End If
    Loop
  End With
End Function
0
0 / 0 / 0
Регистрация: 07.11.2018
Сообщений: 130
27.05.2021, 06:56  [ТС]
не могу скинуть файлы)вроде нашлось решение

на первой кнопке-при формировании PDF
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
'записывает вес не подписанного файла в ячейку I2
 
Dim fsObj, filePointer, myFile
myFile = ActiveWorkbook.Path & "" & Range("A1") & "_" & "Анкета" & "_" & Range("H6") & ".pdf"
Set fsObj = CreateObject("Scripting.FileSystemObject")
If fsObj.FileExists(myFile) = True Then
    Set filePointer = fsObj.GetFile(myFile)
   Range("I2") = filePointer.Size
    
Else
    MsgBox "Файл " & UCase(myFile) & " не найден."
    
    End If
 
 
потом делаю так - это получается уже на вторую кнопку идет на отправку
 
Dim fsObj, filePoint, myFile
myFile = ActiveWorkbook.Path & "" & Range("A1") & "_" & "Анкета" & "_" & Range("H6") & ".pdf"
Set fsObj = CreateObject("Scripting.FileSystemObject")
If fsObj.FileExists(myFile) = True Then
    Set filePoint = fsObj.GetFile(myFile)
   Range("J2") = filePoint.Size  'записывает вес файла в ячейку J2
 
Else
    MsgBox "Файл " & UCase(myFile) & " не найден."
    
    End If
    
    If filePoint.Size = Range("I2") Then
    MsgBox "Не подписан файл Анкета! Сформируйте PDF ещё раз и подпишите Вашей ЭЦП": End
    
    End If
' если вес равен весу до подписания то выдает сообщение

и в общем-то все работает, главное заказчика устраивает))

Спасибо ОГРОМНОЕ за оперативную помощь)
0
малоболт
1328 / 510 / 213
Регистрация: 30.01.2020
Сообщений: 1,244
27.05.2021, 08:06
Цитата Сообщение от Olesya-lisa89 Посмотреть сообщение
и в общем-то все работает, главное заказчика устраивает))
Отлично!
Я бы всё же рекомендовал потестить и ту функцию, что я написал выше. Она не зависит от наличия данных о файле до подписания и просто проверяет наличие тега подписи внутри файла. Может использоваться для отправки файлов с другого компа, ранее отправленных файлов, или в других случаях, когда не с чем сравнивать длину. Может имеет смысл встроить и её в этот механизм, как дополнительный или альтернативный этап контроля. Посмотрите.
0
0 / 0 / 0
Регистрация: 07.11.2018
Сообщений: 130
27.05.2021, 11:48  [ТС]
Спасибо большое, попробую
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.05.2021, 11:48

Проверить подписан на канал YouTube
У меня есть приложение и в приложении есть игровые монеты, теперь, я хочу сделать, чтоб по кнопке предлагалось подписаться на канал в...

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

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

Проверить, может ли заданная строка быть электронной почтой
Для этого необходимо выполнение следующих условий: Первая часть - до 64 символов Все вместе - до 254 символов Точка и @ не может...

Драйвер подписан, но не стартует
Приветствую! Есть драйвер, подписываю сертификатом GlobalSign Extended validation sha256, при попытке запустить на win7 sp1 пишет ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru