Я разработал надстройку VSTO для Word несколько лет go. Он использует чернильный инструмент, поэтому пользователь может написать подпись прямо на документе. Я закодировал его на Visual Basi c, потому что в то время я не знал этого лучше. Сегодня взял бы C#. Я не профессионал.
Как это работает
- Когда пользователь открывает документ, надстройка ищет определенное ключевое слово. Он содержит около 30 символов и скрыт в документе.
- Если ключевое слово найдено, оно прокручивается до поля подписи и запускает инструмент рисования, чтобы пользователь мог поставить подпись ручкой (предпочтительно) или finger.
- Когда документ закрыт, он будет автоматически загружен на сервер, где он хранится в формате pdf.
Итак: Открыть - Подписать - Закрыть. Никакого другого взаимодействия не требуется.
Слабое место - , для этого я использую CommandBars.ExecuteMso. Время от времени Microsoft что-то меняет на вкладке ленты.
Я использовал это в последние годы
Для Word 2010 и 2016
Application.ActiveDocument.CommandBars.ExecuteMso("InkingStart")
Для Word 365 - сборка 1803
Application.ActiveDocument.CommandBars.ExecuteMso("DrawInkMode")
Для Word 365 - сборка 1806
Application.ActiveDocument.CommandBars.ExecuteMso("FingerPaintingMode")
К сожалению, он больше не работает, начиная со сборки 12527.20194 (https://support.office.com/en-us/article/what-s-new-in-microsoft-365-95c8d81d-08ba-42c1-914f-bca4603e1426?ui=en-US&rs=en-US&ad=US)
В этой сборке они добавили инструмент лассо. Когда я выполняю CommandBars.ExecuteMso ("FingerPaintingMode"), активен инструмент лассо, а не ручка.
InkToolbox_lasso
Вы можете выполнить этот код как VBA в Word чтобы понять, что я имею в виду.
Sub InkTest()
Application.ActiveDocument.CommandBars.ExecuteMso ("FingerPaintingMode")
End Sub
Странно то, что когда вы физически нажимаете на FingerPaintingMode, активно перо, а не лассо.
InkToolbox_pen
Я думаю о двух возможных решениях
- Используйте чернильный объект напрямую, а не go поверх ленты. Я предпочитаю вариант, но я не могу найти для этого способ. https://docs.microsoft.com/en-us/office/vba/api/overview/word/object-model
- Выберите перо в InkToolbox на вкладке TabDrawInk. Но это тип управления. Поэтому я не могу использовать ExecuteMso. Как я мог это сделать?