Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Формуляр

847  
dennisgelsen старожил18.02.14 08:29
NEW 18.02.14 08:29 
Вопрос в том как заполнить формуляр/документ по маске данными из исходного текста автоматически. Сам текстовый файл состоит из пары сотен строк, в начале каждой строки стоит двухзначное число-код, которое определяет функцию следующего текста. Например:
15 Mustermann, где "15" осначает "фио"
17 Kurzschluss Straße 22, где "17" означает "адресс"
и тд.
Код периодически повторяется с новыми данными.
Задача превратить этот техт в набор отдельных формуляров для печати в PDF. Формуляр я сделаю сам. Можно конечно ручками расставить техт в нужные позиции формуляра и двести раз, но может быть есть возможность эту процедуру автоматизировать? Нужна идея. Спасибо.
#1 
Vovan(ator) старожил18.02.14 09:34
Vovan(ator)
NEW 18.02.14 09:34 
в ответ dennisgelsen 18.02.14 08:29
Могу представить что это какой-нибудь каталог с лицензией на использование.
Мне както один гаврик предложил подобную работёнку.
Но я к счастью (моему тоже) прочитал лицензию.
Оказалось, что фирма програмировавшая этот каталог вставила адреса-ловушки.
И если кто использовал эти адреса не заплатив, то могли с хорошей вероятностью влететь
на хорошенькую суммочку
А использкя эту программу с лицензионным кодом, эти ловушки деактивировались.
А если это всё легально, то былобы желательно посмотреть парочку - другую оригинальных дат из этой таблицы.
Чтоб пронаблюдать закономерность.
Тогда проще будет программку сколдовать
#2 
  Posmotrim знакомое лицо18.02.14 11:45
Posmotrim
NEW 18.02.14 11:45 
в ответ dennisgelsen 18.02.14 08:29
Зависит от того, чем будет рендериться PDF. Если это xsl-fo, то в исходном xml-е в каком-то аттрибуте просто хранить номер кода поля. Если это к примеру Adobe InDesign, то можно воспользоваться или теми же xml тэгами или, если позволяют шаблоны, то метками(label). А остальное, когда есть шаблон с привязкой к полям по коду и функция для получения значения из текстового файла по коду, - дело техники.
#3 
dennisgelsen старожил18.02.14 15:14
NEW 18.02.14 15:14 
в ответ Posmotrim 18.02.14 11:45
Пережать формуляры в PDF я могу и потом. А вот это
В ответ на:
... когда есть шаблон с привязкой к полям по коду и функция для получения значения из текстового файла по коду, - дело техники.

очень интересно, но как последнее осуществить и где смотреть функции, есть такие в Excel? Потому что какого-либо фундаментального программирования мне не осилить.
#4 
  Posmotrim знакомое лицо18.02.14 15:44
Posmotrim
NEW 18.02.14 15:44 
в ответ dennisgelsen 18.02.14 15:14
Тоесть рендерит Excel? Вариантов много можно придумать...
1) Самый простой способ: в ячейку, куда нужно писать данные из внешнего файла запиcать к примеру "ex:22". Перед тем, как будет рендерится PDF, нужно будет обойти все ячейки, в которых есть "ex:число". Вытащить это число, потом взять значение из внешнего файла по данному коду и записать обратно в ячейку
2) Способ немного сложней. Но я бы выбрал именно его: Формируем ещё один дополнительный лист в эксел. Пишем функцию, которая содержимое внешнего файла занесёт в новый лист с учётом, что номер строки = коду текста. Значение пусть находится в столбце A. Теперь в листах "шаблонах" мы делаем просто ссылки на значения из дополнительного листа. Перед тем, как будет рендерится PDF, выхываем ф-ию которую мы написали, для обновления дополнительного листа.
#5 
  Posmotrim знакомое лицо18.02.14 15:48
Posmotrim
NEW 18.02.14 15:48 
в ответ dennisgelsen 18.02.14 15:14
dennisgelsen старожил18.02.14 16:15
NEW 18.02.14 16:15 
в ответ Vovan(ator) 18.02.14 09:34
Не надо представлять и я не гаврик. Исходный файл - результат моего труда, принадлежит мне и снят мной лично с моего измерительного прибора для последующей обработки. Никакого криминала и никаких ловушек. Сама по себе твоя осторожность мне понятна. Оригинальная программа данные не "видит", хотя я могу легко открыть файл в текстовом редакторе и вижу все результаты. За два-три вечера перепечатаю ручками. Такие проблемы были уже и раньше, но в таком объеме и так больно в первые. Сами имена/ адреса меня слабо интересуют, они у меня есть и так - результаты важнее.
Текст в столбик, в начале строки двухзначное число/код и повторяется примерно через каждые девять строчек, с другим текстом или без текста вообще.
#7 
dennisgelsen старожил18.02.14 16:24
NEW 18.02.14 16:24 
в ответ Posmotrim 18.02.14 15:48
Спасибо за идеи, попробую разобраться.
#8 
Vovan(ator) старожил18.02.14 17:23
Vovan(ator)
NEW 18.02.14 17:23 
в ответ dennisgelsen 18.02.14 16:15
Не надо сразу обижаться
Извиняюсь если не удачно изложил историю.
Просто ситуация была очень похожа на Вашу и мой тогдашний заказчик дал мне подобное задание.
И еслиб я не обратил внимание на "мелочи", то влетели бы оба.
А так, он как узнал про ловушки и штрафы, то сразу передумал с заказом...
А если это всё без криминала, то и париться нечего.
Я бы парсер какой-нибудь спрограммировалбы, но уже вроде всё решилось.
#9 
dennisgelsen старожил23.02.14 07:41
23.02.14 07:41 
в ответ Vovan(ator) 18.02.14 17:23, Последний раз изменено 24.02.14 21:04 (dennisgelsen)
1. Формуляр сделал, функция "sverweis" успешно раставляет в нем техт по местам.
2. Макро пишет исходный текст в соседнюю таблицу, текст расщепляется по пробелам и лежит в массиве sverweis.
3. Макро вносит техт по строкам, до строки с номером 32(имя) - граница блока данных для этого формуляра. Теперь можно проверить техт, исправить и отправить на печать PDF.
Не соображу как менять блок техта на следующий из исходного файла. Надо сказать, что мой бейсик конкретно заржавел. Документ в Libreoffice.
похоже нужен еще один цикл и диалог с кнопкой "Next".
#10 
Vovan(ator) старожил25.02.14 08:27
Vovan(ator)
NEW 25.02.14 08:27 
в ответ dennisgelsen 23.02.14 07:41
В ответ на:
Надо сказать, что мой бейсик конкретно заржавел.

Мой тоже.
Я сейчас больше с C# и Java занимаюсь.
#11 
dennisgelsen старожил27.02.14 19:22
NEW 27.02.14 19:22 
в ответ Vovan(ator) 25.02.14 08:27
Опять я,
как научить этот макро http://www.ooowiki.de/SpeichernAlsPdf.html печатать только первую страницу текста в PDF?
#12 
Vovan(ator) старожил27.02.14 20:39
Vovan(ator)
NEW 27.02.14 20:39 
в ответ dennisgelsen 27.02.14 19:22
Посмотри тут:
www.office-loesung.de/ftopic94579_0_0_asc.php?sid=d1c1149a5d8d6bc1aaf8bb0...
похоже подобная проблема была у человека.
И пожоже её решили.
#13 
  L@nixx знакомое лицо01.03.14 01:07
NEW 01.03.14 01:07 
в ответ dennisgelsen 18.02.14 08:29
т.е. тебе нужно иметь формуляр и подставляя значения делать на этой основе готовый пдф?
если так то
1. делаешь в latex совй формуляр
2. вставляешь туда свои маркеры
3. пишешь скрипт, который будет заменять твои маркеры на данные
4. генерируешь при помощи pdflatex твой pdf из уже готового tex файла
мне в свое время нужно было быстро сделать решение для создания учета времени и составления на основе внесенных данных накладной на поставку услуг. сделал тупо bash скрипт, который все вносил в csv из которого я потом генерировал накладные на основе мною созданого формуляра.
#14 
dennisgelsen старожил01.03.14 18:25
NEW 01.03.14 18:25 
в ответ L@nixx 01.03.14 01:07
Спасибо, разобрался с экселем. Работает пока на полуавтомате, но работает.
#15 
modul83 прохожий10.03.14 20:22
modul83
NEW 10.03.14 20:22 
в ответ dennisgelsen 01.03.14 18:25
Ты скинь на мыло файл, и правильно задачу поставь сделаем в автомате в екселе, а лучше ехе-шник. на дельфях, например. будеш портабельной версией своей идеи на любом компе пользоваться, а не факт, что на всех офис стоит.
#16