Страница 2 из 2

СообщениеДобавлено: 11.04.2006 (Вт) 15:35
Amed
Andrey Fedorov писал(а):Ну кто-ж знает всю постановку конкретной задачи окромя автора ;)

Я тоже знаю :lol:

СообщениеДобавлено: 11.04.2006 (Вт) 15:56
Antonariy
Запутал окончательно.
Картинку мне возвращает система в объектах (коллекции полей).
Что за поля?
когда я открываю свой документ
Документ навроде вордовского файла, имеющий возможность отображать картинки?
мне передается только идентификатор на файл в файловой библиотеке
Имеется ввиду вышеуказанный документ?

А, собственно, кто занимается печатью, сервер или клиент?

СообщениеДобавлено: 11.04.2006 (Вт) 15:58
Antonariy
Имхо, в консерватории полная разруха :D

СообщениеДобавлено: 11.04.2006 (Вт) 16:17
alibek
Эх... Тема совсем не туда свернула.

Ладно, попробую объяснить.
Есть система электронного документооборота. Работает она на IIS+ASP.NET, в качестве БД используется MSSQL, но он используется не напрямую, а через своего провайдера, промежуточный сервер (который разруливает доступ, блокировки и прочие изыски).
На клиентских компах используется браузер; при установке клиента устанавливаются необходимые библиотеки (DLL и OCX).
Каждый документ описывается XML-схемой данных, система поддерживает единый способ доступа к данным, адресуясь к XML-полям, нужный уровень абстракции реализуется промежуточным сервером.
В системе предусмотрен базовый набор разных типов документов, дополнительно имеется набор типов документов, нужных для документооборота (входящие/исходящие сообщения, файловая библиотека, позволяющая хранить разные версии файлов и т.п.).
При необходимости функциональность системы можно расширить, создав нужный конкретной организации документ (например, вести кадровый учет, добавив приказы и т.п.). Для этого составляется XML-схема и создается ActiveX Control, реализующий требуемый интерфейс. От компонента требуется, чтобы он правильно себя инициализировал, умел получать данные, передаваемые ему системой и обеспечивал корректное обновление этих данных. Данные эти передаются в объекте; допустим объект DocData, содержащий коллекцию Sections, в которой содержится одна или несколько записей Rows. А Rows - это что-то вроде строки в БД, у нее есть коллекция значений, например поле "Имя пользователя" - DocData.Sections(sMainSection).Rows(1).Value("UserName").

Компонент должен корректно принимать эти данные и сохранять (заполняя коллекции DocData и вызывая метод Update), дальше этими данными (сохранением их в БД или извлечением из БД, если документ открывается) занимается система.

Для печати документов используется XSL. Схема данных у меня есть (я ее сам описываю в XML-описании документа). XSL также хранится в БД, к каждому документу может быть привязан один или несколько XSL-файлов.
Когда пользователь желает распечатать документ, он нажимает кнопку на панели инструментов.
При этом система извлекает данные документа (в соответствии со схемой данных в XML-описании), передает их в XSL и формирует HTML-код, который отображается в форме Print Preview (построенной на основе браузера).

Все это длинное толкование нужно для того, чтобы объяснить, почему я никак не могу повлиять на процесс формирования печатного документа. Я могу только написать XSL.

СообщениеДобавлено: 11.04.2006 (Вт) 16:26
Antonariy
Теперь понятно. Насчет разрухи беру слова обратно.

Какое место в этой структуре занимают картинки? Это одно из полей DocData.Sections(sMainSection).Rows(1).Value("Picture")?

СообщениеДобавлено: 11.04.2006 (Вт) 16:38
alibek
DocData.Sections(sMainSection).Rows(1).Value("PictureID")
По этому ID мне надо найти запись в другом документе и извлечь байтовый массив (для этого система предоставляет соответствующие методы).

СообщениеДобавлено: 11.04.2006 (Вт) 16:44
alibek
И даже если нужная картинка хранится в Value("Picture"), что это мне даст?
Для доступа к системе (и ее объектам и данным) нужна авторизация и правильная инициализация, сгенерированный HTML ее обеспечить не сможет.
Есть правда один извращенный вариант, в HTML использовать <object...> и извлечением данных будет заниматься мой самописный компонент, но... Но лучше я буду выгружать в RTF :)

СообщениеДобавлено: 11.04.2006 (Вт) 17:01
Antonariy
Я так понимаю, при создании экземпляров классов, нужных для получения картинки, требуется каждый раз полностью повторять процедуру авторизации? И нельзя передать идентификатор уже авторизированной сессии для доступа к данным используя ее?

СообщениеДобавлено: 11.04.2006 (Вт) 17:04
alibek
Идентификатор будет, если процедуру печати буду вызывать я (из моего документа). Но я тогда могу и просто файлы в предопределенное место выгрузить.
Если печать осуществляет система, откуда она возьмет идентификатор сессии? Его ведь не будет XML-данных, там только данные непосредственно документа.

СообщениеДобавлено: 11.04.2006 (Вт) 17:10
Antonariy
То есть система получает от контрола готовенькие xml+xsl и печатает?
А картинку в виде массива тоже предоставляет контрол?

СообщениеДобавлено: 11.04.2006 (Вт) 17:18
tyomitch
Стойте, стойте. А скрипты-то в HTML почему не подходят?

СообщениеДобавлено: 11.04.2006 (Вт) 17:28
Antonariy
Видимо из соображений безопасности - мало ли, скрипты отключены.

СообщениеДобавлено: 11.04.2006 (Вт) 17:29
alibek
tyomitch писал(а):Стойте, стойте. А скрипты-то в HTML почему не подходят?

Заказчик отверг :)
Говорит, что уже натыкались на какие-то неявные грабли, с ними связанные. Да и безопасность скорее всего роль играла.

СообщениеДобавлено: 11.04.2006 (Вт) 17:32
alibek
Antonariy писал(а):То есть система получает от контрола готовенькие xml+xsl и печатает?
А картинку в виде массива тоже предоставляет контрол?

Нет, не от контрола.
Система сама извлекает XML (из БД) и XSL (из описания документа) и печатает. Контрол только отвечает за то, чтобы данные корректно попали в XML (вернее, в объекты, из которых система переносит данные в XML). В своем контроле (документе) я могу инициировать печать, но пользователь может распечатать документ и без моей помощи, а самостоятельно.

СообщениеДобавлено: 11.04.2006 (Вт) 17:38
Antonariy
Последний вопрос. Каким образом система получает картинку? Получает DocData.Sections(sMainSection).Rows(1).Value("PictureID") и на основании id извлекает массив?

Вынужден прервать обсуждение до завтра.

СообщениеДобавлено: 11.04.2006 (Вт) 17:46
alibek
Система?
С системой пока не разбирался (выводом на печать займусь чуть позже), наверное в виде Base64 передается.
А компонент получает данные методами, система предоставляет интерфейс для извлечения содержимого файлов по идентификатору (в байтовый массив).

СообщениеДобавлено: 12.04.2006 (Ср) 9:20
Antonariy
Н-да. Так по чайной ложке можно подробности тянуть до осени. Но ты парень с головой, сам придумаешь какой-нибудь способ, раз предложенные не подошли.

СообщениеДобавлено: 12.04.2006 (Ср) 22:59
gaidar
Все прочесть сил нет. Но сразу же совет из XML можно сгенерировать все, что угодно. Почему бы не делать PDF или тот же Word файл?

СообщениеДобавлено: 13.04.2006 (Чт) 7:19
alibek
gaidar писал(а):Почему бы не делать PDF или тот же Word файл?

Средствами исключительно парсера MSXML? Если да, то не подскажешь, как?

СообщениеДобавлено: 08.01.2008 (Вт) 12:21
Saturn.65
Скажите пожалуйста, можно ли писать коментарии в CSS?
Например. Как добавить коментарий к нужной строчке?
В VB это будет ('). А как будет в CSS?
Код: Выделить всё
A:link   {
color:00ff00;
font-size:normal;
font-style:normal;
font-weight:normal;
text-decoration:none;
cursor:hand;
font-variant:normal;
text-transform:normal;
background-color:4e4d5b;
   }

Пишу сайт. CSS большой и чтоб не путаться, хотел бы коментировать.