|
Изменение PDF из 1с | ☑ | ||
---|---|---|---|---|
0
zippygrill
22.07.21
✎
16:21
|
Привет!
Дано pdf документ с заполняемыми полями, а ля https://prnt.sc/1ecz2h2 Если заполняемую часть - заполняет человек (да и программно можно обратится и заполнять), то другую часть, там где у меня переменные "v8Отпуск_планПериод_х" надо как то заполнить информацией из 1С. Согласно документации Adobe, можно по OLE взаимодействовать с файлом https://opensource.adobe.com/dc-acrobat-sdk-docs/acrobatsdk/pdfs/acrobatsdk_iacguide.pdf Наклепал пока такое. Либо я не нашел, либо вообще нет возможности обратится в pdf чтобы точно попасть в мои переменные (как обычный текст) и устанавливать/заменить значения. Библиотеки сторонних разработчиков, если есть на уме тоже рассмотрю. Важно чтобы там была возможность менять текст (а не Crop, Merge файлов). doc = Новый COMОбъект("AcroExch.PDDoc"); doc.Open(ИмяВременногоФайла); avDoc = doc.OpenAVDoc(ИмяВременногоФайла); AcroExch = Новый COMОбъект("AcroExch.App"); form = Новый COMОбъект("AFormAut.App"); AcroRect = Новый COMОбъект("AcroExch.Rect"); AcroRect.Left = 35; AcroRect.Right = 785; AcroRect.Top = 1000; AcroRect.Bottom = 22; TextSelect = doc.CreateTextSelect(0, AcroRect); NumText = TextSelect.GetNumText(); Для i = 0 по NumText -1 цикл Сообщить(TextSelect.gettext(i)); КонецЦикла; |
|||
1
zippygrill
22.07.21
✎
16:23
|
pdf еще раз https://prnt.sc/1ed2t6g
|
|||
2
zippygrill
22.07.21
✎
16:23
|
prtn сейчас не работает..
|
|||
3
zippygrill
22.07.21
✎
16:25
|
вполне вероятно что надо сперва выделить текст, потом заменить через ole AcroExch
|
|||
4
sitex
naïve
22.07.21
✎
17:00
|
(0) Что мешает это все заполнить в 1С и сохранить в таком же виде в pdf ?
|
|||
5
zippygrill
22.07.21
✎
18:30
|
(4) Из 1с невозможно заполняемые поля сделать в pdf
|
|||
6
sitex
naïve
22.07.21
✎
18:34
|
(5) у вас что pdf уже заполннен и его надо дополнить ?
|
|||
7
zippygrill
25.07.21
✎
17:24
|
(6) Да
|
|||
8
Garykom
гуру
25.07.21
✎
17:28
|
(0) не проще весь документ заполнять из 1С?
а потом сохранять в готовый PDF т.е. пусть юзер не в некоем внешнем вьювере PDF заполняет а потом как то данными из 1С дополнять а вместо этого сделать формочку в 1С и там юзер заполняет а потом дополнять нужными данными из 1С и все программно в PDF! |
|||
9
zippygrill
25.07.21
✎
17:29
|
(8) Из 1с невозможно заполняемые поля сделать в pdf
|
|||
10
Garykom
гуру
25.07.21
✎
17:32
|
(9) нахрен заполняемые полностью готовый PDF уже заполненный
|
|||
11
Garykom
гуру
25.07.21
✎
17:33
|
(10)+ цель PDF документа его переносимость и печать причем одинаковая на разных устройствах
или надо заполненные поля потом править? нахрена? |
|||
12
Garykom
гуру
25.07.21
✎
17:33
|
короче убрать эти заполняемые и данные туда хардкорно
|
|||
13
zippygrill
25.07.21
✎
17:35
|
(12) Там суть в том что из 1с сотруднику выгружается заявление на перенос отпуску. в таблице слева, из 1с выгружается его запланированный отпуск, а в таблице справа - он сам должен проставлять на какие дни переносить.
Бл* почему не использовать word - не пойму..выкрутасы какие-то.. |
|||
14
ДедМорроз
25.07.21
✎
17:50
|
Pdf это открытый формат,можно читать и писать как двоичные данные,если что.
И как бы word - это нифига не стандарт,в отличие от pdf. Другое дело,что заполнять логичнее xml,а уже на его основе генерить печатную форму. |
|||
15
zippygrill
25.07.21
✎
17:53
|
(14) Пример в студию?
|
|||
16
Garykom
гуру
25.07.21
✎
17:59
|
(13) ну так пусть сотрудник все в 1С и делает!
нахрена этот PDF то? |
|||
17
Garykom
гуру
25.07.21
✎
18:00
|
(16)+ Раньше такое с XLS делали и тоже не понимал нахрена
Когда есть HTML что намного удобней |
|||
18
Garykom
гуру
25.07.21
✎
18:00
|
(17)+ в смысле или сразу в 1С делаем, или делаем онлайн формы снаружи 1С для юзеров не имеющих доступа в 1С
и эти онлайн формы связываем с 1С как надо |
|||
19
zippygrill
20.09.21
✎
16:31
|
апдейт
Короче, удалось через Адобе Акробат Про манипулировать эти заполняемые поля. И все это происходит на клиенте. doc = Новый COMОбъект("AcroExch.PDDoc"); doc.Open(ИмяВременногоФайла); AcroExchApp = Новый COMОбъект("AcroExch.App"); AcroExchApp.Hide(); Для i = 1 По 5 Цикл Временный = ПолучитьИмяВременногоФайла("pdf"); ДвоичныеДанныеМакета.Записать(Временный); AcroExchAVDoc = Новый COMОбъект("AcroExch.AVDoc"); avDoc = doc.OpenAVDoc(Временный); form = Новый COMОбъект("AFormAut.App"); Fields = form.Fields; Для Каждого Field Из Fields Цикл ГСЧ = Новый ГенераторСлучайныхЧисел(); СлЧисло = ГСЧ.СлучайноеЧисло(1); Если Лев(Field.Name, 21) = "v8Отпуск_планКолДней_" Тогда Field.Value = СлЧисло; КонецЕсли; Если СтрНайти(Field.Name, "IsReadOnly") > 0 Тогда Field.IsReadOnly = True; КонецЕсли; КонецЦикла; КонецЦикла; ResultSave = doc.Save(,Временный); doc.Close(); avDoc.Close(0); AcroExchApp.CLoseAllDocs(); AcroExchApp.Exit(); Сейчас уперлись в лицензии Адоба в котором пишут что для серверных автоматизированных процессов нужно отдельное соглашение. Они (Адобе) уже как месяц не могут понять как нам лицензировать серверную часть Адоб Про с помощью которого через OLE можно это все делать и генерить pdf регламентным заданием.. |
|||
20
hhhh
20.09.21
✎
16:59
|
(19) вам же на клиенте нужно.
|
|||
21
zippygrill
21.09.21
✎
09:57
|
(20) Возможно в будущем, какие то задачи будут на клиенте происходить. Но ближайшая - это с сервера сформировать файлы и отправить по почте.
|
|||
22
ptiz
21.09.21
✎
10:05
|
(21) Может в гугл-док? Сотруднику ссылку отправлять на документ.
|
|||
23
zippygrill
22.09.21
✎
13:14
|
(22) на pdf сотрудник еще должен свой НКЭП ставить, а word не умеет :)
|
|||
24
zippygrill
01.10.21
✎
10:08
|
Привет! Пока пытаемся лицензировать этот Adobe, надо смотреть в другую сторону.
Нашел что Foxit тоже умеет работать с pdf файлами. У них есть разные SDK сборки: .Net, C, C++, Java Какая из сборок SDK удобнее использовать из самой 1С? Вот например выдержка как инициализация идет в SDK под .Net https://prnt.sc/1ubocik |
|||
25
zippygrill
01.10.21
✎
10:10
|
*скрин из SDK для Java
|
|||
26
zippygrill
05.10.21
✎
13:25
|
апну
Оч актуально, какие SDK сборки из 1с использовать (.net, java, c). Что FOxit, что Adobe дают скачивать эти sdk библиотеки. И как я понимаю они интегрируются в твое решение. А как из 1С то вызвать методы библиотек то..если к ним, что-то я ля "Новый COMОбъект()" нет? |
|||
27
Kassern
05.10.21
✎
13:31
|
(26) помню как то с pdfками работал, ставил от адоба прогу для этого, причем там надо было проф версию ставить. А далее все верно аля Новый COMОбъект() и смотришь какие методы есть на оф сайте и с ними работаешь
|
|||
28
novichok79
05.10.21
✎
13:42
|
поднимите микросервис на каком-нибудь ЯП, который умеет редактирование PDF.
а вы в сервис кидаете пдфку, поля и их значения, на выходе сервис вам сообщает где на сервере забрать файл. |
|||
29
zippygrill
05.10.21
✎
13:43
|
(27) в Адоб Про ты когда его ставишь, он на автомате в реестре регистрируется чтобы ты потом работал через COMОбъект(). Это я так делаю в (19) - но, вопрос лицензировании встал.
А еще у Адоб есть Services Api - это типа библиотека скаченная с сайта с dll - вот это непонятно как использовать https://prnt.sc/1uvlt2d |
|||
30
zippygrill
05.10.21
✎
13:44
|
ой, не ту ссылку (она от foxit)
|
|||
31
novichok79
05.10.21
✎
13:44
|
а нельзя в поле HTML документа закинуть документ и потом просто считать значения из DOM документа?
|
|||
32
Kassern
05.10.21
✎
13:44
|
(29) "но, вопрос лицензировании встал" покупайте и делов то)) я не думаю, что аддоб будет бесплатно что-то вообще давать.
|
|||
33
novichok79
05.10.21
✎
13:45
|
ну правда придется PDF переделать в HTML
|
|||
34
novichok79
05.10.21
✎
13:45
|
а то adobe - коммерческая хрень, COM - только Windows, такие себе зависимости
|
|||
35
zippygrill
05.10.21
✎
13:47
|
(32) Мы хотим, а вот Адоб что-то не понимает нас..
|
|||
36
zippygrill
05.10.21
✎
13:48
|
(28) хоть мы ИТ компания - но привлечь к этому другое подразделение как-то не хочется
|
|||
37
Kassern
05.10.21
✎
13:53
|
(35) https://infostart.ru/public/1120021/ вот пример работы с foxit
|
|||
38
Kassern
05.10.21
✎
13:54
|
вот еще вариант https://do-1c.ru/articles/forspec/redaktirovanie-pdf-iz-1s
|
|||
39
novichok79
05.10.21
✎
14:00
|
(36) я к тому, что если там не хайлоад, не будет БД, то любой программер (в т. ч. 1Сник) с помощью quick start мануалов смог бы такое запилить - дернуть библиотеку, получить файлик и сохранить на диск.
имхо, самый дешевый и мультиплатформенный способ. |
|||
40
novichok79
05.10.21
✎
14:01
|
в публикации с ИС чуваки 499 баксов за полную версию либы - е**анулись в край совсем
|
|||
41
Kassern
05.10.21
✎
14:01
|
(39) ну это вы загнули "любой программер") Сейчас такие программеры, что им мануал дай, ссылку скинь, пример сунь, а выхлопа 0...
|
|||
42
Kassern
05.10.21
✎
14:02
|
(40) для бизнеса 35тыс разово это не такие уж большие бабки, особенно, если библиотека удобная и полностью перекрывает потребности.
|
|||
43
novichok79
05.10.21
✎
14:04
|
(41) судя по нетривиальности задачи для 1С, топикстартер не из таких. на больших проектах чуваки дерут друг у друга код, что в 1С, что не в 1С. проверено лично.
(42) это да, но COM. если вдруг потом захочется переехать на другую ОС? хз, когда мы писали самописки, приходилось как раз микросервисами выкручиваться, чтобы мультиплатформенность и все такое. |
|||
44
Kassern
05.10.21
✎
14:08
|
(43) а нужна ли она ТС эта мультиплатформенность?) Особенно если уже куплен MS SQL и серверная винда, а это иногда дороже самого сервера выходит)
|
|||
45
Kassern
05.10.21
✎
14:09
|
а так да, можно микросервис поднять, перегонять им PDF в удоборедактируемый формат и сувать его уже 1ске, та его правит и сохраняет уже в PDF, это она сама умеет
|
|||
46
DrZombi
гуру
05.10.21
✎
14:49
|
(19) Адоб про платный :)
|
|||
47
DrZombi
гуру
05.10.21
✎
14:54
|
(38) (37) Интересные примерчики :)
Спасибо :) |
|||
48
zippygrill
07.10.21
✎
09:44
|
Скачал я короче библиотеки foxit на C++ https://prnt.sc/1v4h31n. В составе есть библиотека скомпилированная уже в виде dll.
Пытаюсь ее использовать через ПодключитьВнешнююКомпоненту() на клиенте - не получается Пытаюсь через regsvr регистрировать соответствующий разряд - никак. Что за нах? |
|||
49
ДенисЧ
07.10.21
✎
09:46
|
(48) Странно.. Почему это foxit ничего не знает про 1с?
Непорядок, надо санкции вводить... |
|||
50
Kassern
07.10.21
✎
09:47
|
(48) а ты уверен что эта библиотека для 1ски писалась?)
|
|||
51
Обработка
07.10.21
✎
09:48
|
Все не читал. Короче извращенцы были и будут всегда.
|
|||
52
zippygrill
07.10.21
✎
09:50
|
(50) Да там 1с и не пахло :)
|
|||
53
zippygrill
07.10.21
✎
10:03
|
(38) Пойду Debenu раскурю..
|
|||
54
novichok79
07.10.21
✎
13:24
|
(48) сделайте уже сервис на питоне или джавке (благо опенсорных либ для работы с pdf там докуа и больше). зачем делать на 1С то, для чего он не предназначен? это как кушать суп вилкой. можно конечно, но очень неудобно.
|
|||
55
novichok79
07.10.21
✎
13:24
|
а у вас там винда, ну возьмите C#
|
|||
56
ДенисЧ
07.10.21
✎
13:25
|
(54) Какой питон, какая джавка?? Голанг же!
|
|||
57
novichok79
07.10.21
✎
13:27
|
(56) ахахахаха. да без проблем.
https://github.com/signintech/pdft |
|||
58
novichok79
07.10.21
✎
13:29
|
(48) вот кстати есть либа для джавки pdfbox, есть еще openpdf но хз может ли она то, что pdfbox.
даже туториал есть ёпта https://www.tutorialspoint.com/pdfbox/pdfbox_adding_text.htm берете spring boot initializer, впиливайте туда это. https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox дебажите, тестите. профит |
|||
59
zippygrill
08.10.21
✎
09:47
|
https://prnt.sc/1v9k9xn
странная ситуация с кириллицей в этот Debenu. Если курсор ставлю на текст с кириллицей - то его видно. КАк только на другое поле курсор ставлю, текст на кириллице исчезает :) Где то какая то кодировка или свойство поля надо ставить.. |
|||
60
novichok79
08.10.21
✎
18:08
|
а вы отважные...
|
|||
61
серый КТУЛХУ
08.10.21
✎
19:58
|
в гуглшит можно и писать из 1с и читать в 1с и раздавать-отбирать права (всякие!) из 1с - по мыло-адресам, на которые автоматом генерится письмо про "вам предоставлен доступ..."
|
|||
62
zippygrill
11.10.21
✎
13:05
|
(61) хорош ваш гуглшит
|
|||
63
zippygrill
11.10.21
✎
20:31
|
Вдруг у кого-то кириллица не будет выводится
GetNeedAppearances_Result = QP.GetNeedAppearances(); SetNeedAppearances_Result = QP.SetNeedAppearances(1); |
|||
64
серый КТУЛХУ
11.10.21
✎
23:08
|
(63): он не мой - он гугля. и (61) доступно всем его юзерам.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |