Size: a a a

Golang Developers — русскоговорящее сообщество

2020 September 18

x

x-foby in Golang Developers — русскоговорящее сообщество
Andrey Kolkov
Ребят, а как бы вы такую задачу решили...
Есть договор-оферта в .docx, нужно ее загрузить с диска, поменять на лету на ней номер договора в тайтале на нужный из базы, и в колонтитуле тот же поставить, и отдать юзеру на фронт в .pdf.
Есть что-то юзабельное, может кто уже сталкивался с подобным?
.docx — это zip-архив с xml-документом внутри.
Так что решение очень простое)
источник

Y

Yuri in Golang Developers — русскоговорящее сообщество
ну так-то да… XML поменять - не поле перейти 🙂
Мне почему-то кажется, что там кроме изменения текста в исходнике, надо еще какие-нибудь правила соблюсти - типа, подсчитать контрольные суммы, подписи и все такое
источник

AK

Andrey Kolkov in Golang Developers — русскоговорящее сообщество
Yuri
Имхо, гораздо проще просто взять данные (не из лежащего на диске docx, а специально подготовить), подставить нужные и сформировать PDF
Можно и так, но проще поправить и сконвертировать на лету имхо. Думал может готовые либы есть какие, которые кто-то уже пользовал.
источник

AK

Andrey Kolkov in Golang Developers — русскоговорящее сообщество
x-foby
.docx — это zip-архив с xml-документом внутри.
Так что решение очень простое)
так-то да, но мож уже кто так делал... и подскажет чем)
источник

Y

Yuri in Golang Developers — русскоговорящее сообщество
так чтобы сконвертировать - все равно разбирать документ придется. У docx наверняка же нет метода «сделать из этой мешанины стройный PDF».
источник

Y

Yuri in Golang Developers — русскоговорящее сообщество
Полагаю, что в результате получится то же самое - вытаскивание текста из полей XML и формирование из них нового документа 🙂
источник

Y

Yuri in Golang Developers — русскоговорящее сообщество
не сильно отличается от вытаскивания из базы. Тем более, ты все равно из нее номер берешь
источник

Y

Yuri in Golang Developers — русскоговорящее сообщество
Зато не придется все переписывать, когда в договор надо будет воткнуть новый пункт 🙂
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Вообще работа с шаблоном, на основе которого будет формироваться результирующий документ — это по всем фронтам лучше.
Это и проще, и стабильней, и расширяемей.
источник

Y

Yuri in Golang Developers — русскоговорящее сообщество
распаковал docx тем временем… глаза сломать можно нафиг 🙂
источник

AK

Andrey Kolkov in Golang Developers — русскоговорящее сообщество
Yuri
Зато не придется все переписывать, когда в договор надо будет воткнуть новый пункт 🙂
Потому я и хочу из рыбы d .docx все формировать. Поменял там, а номер сам подставится уже...
источник

Y

Yuri in Golang Developers — русскоговорящее сообщество
так а смысл вообще в docx? Поменяли в CRM текст шаблона и готово
источник

Y

Yuri in Golang Developers — русскоговорящее сообщество
А так - поставь MSWord, запусти, открой… трата времени и денег
источник

AK

Andrey Kolkov in Golang Developers — русскоговорящее сообщество
x-foby
Вообще работа с шаблоном, на основе которого будет формироваться результирующий документ — это по всем фронтам лучше.
Это и проще, и стабильней, и расширяемей.
найти бы подходящую либу для чтения. И конвертер .docx -> pdf хороший.
источник

Y

Yuri in Golang Developers — русскоговорящее сообщество
мммда… и получится чудище Франкенштейна 🙂
источник

AK

Andrey Kolkov in Golang Developers — русскоговорящее сообщество
Yuri
так а смысл вообще в docx? Поменяли в CRM текст шаблона и готово
Сложно все. В Воре документ красивый, электронный. Добавляешь пункт, все списки меняют номера пунктов, все ссылки на эти пункты автоматом обновляются сразу. Ничего не теряется.
источник

Y

Yuri in Golang Developers — русскоговорящее сообщество
За время, прошедшее с первого вопроса уже можно было накидать утилиту для формирования PDF по туториалу автора библиотеки.
В ворде документ красивый - потому что на него применились стили.
Никто не мешает также формировать и PDF - где пункты нумерованы - просто список. Индексы проставить - совсем не сложно
источник

Y

Yuri in Golang Developers — русскоговорящее сообщество
Просто структуру документа воспроизвести и стили накинуть
источник

Y

Yuri in Golang Developers — русскоговорящее сообщество
Не думаю, что там прям сложно все с таблицами и встроенной графикой - просто заголовки, подзаголовки и текст, разбитый по абзацам
источник

AK

Andrey Kolkov in Golang Developers — русскоговорящее сообщество
Yuri
За время, прошедшее с первого вопроса уже можно было накидать утилиту для формирования PDF по туториалу автора библиотеки.
В ворде документ красивый - потому что на него применились стили.
Никто не мешает также формировать и PDF - где пункты нумерованы - просто список. Индексы проставить - совсем не сложно
Я пока биллинг пишу, если не найду, тогда на основе своего https://www.npmjs.com/package/@kolkov/angular-editor чего-нить придумаю.
источник