Переобразование Dxl

Тема в разделе "Lotus - Программирование", создана пользователем StarikStarik2705, 29 май 2013.

  1. StarikStarik2705

    StarikStarik2705 Well-Known Member

    Регистрация:
    8 фев 2012
    Сообщения:
    103
    Симпатии:
    0
    в Rich тексте лежит DXl
    <?xml version='1.0' encoding='utf-8' ?>
    <database xmlns='http://www.lotus.com/dxl' version='8.5.3'>
    <document form='Form'>
    <item name='Subject'><text>DXL table</text></item>
    <item name='Body'>
    <richtext> <table>
    <tablecolumn width="5%"/><tablecolumn width="15%"/><tablecolumn width="100%"/><tablecolumn width="80%"/><tablecolumn /><tablecolumn /><tablecolumn /><tablecolumn /><tablecolumn /><tablecolumn /><tablecolumn width="15%"/>
    <tablerow>
    <tablecell bgcolor='silver'><pardef id='3' align='center'/><par def='3'></par></tablecell>
    <tablecell bgcolor='silver'><pardef id='4' align='center'/><par def='4'></par></tablecell>
    <tablecell bgcolor='silver'><pardef id='5' align='center'/><par def='5'><run><font size='8pt'/>Вид документа</run></par></tablecell>
    <tablecell bgcolor='silver'><pardef id='6' align='center'/><par def='6'><run><font size='8pt'/>№ документа LN</run></par></tablecell>
    <tablecell bgcolor='silver'><pardef id='7' align='center'/><par def='7'><run><font size='8pt'/>Дата документа LN</run></par></tablecell>
    <tablecell bgcolor='silver'><pardef id='8' align='center'/><par def='8'><run><font size='8pt'/>РќРђР </run></par></tablecell>
    <tablecell bgcolor='silver'><pardef id='9' align='center'/><par def='9'><run><font size='8pt'/>№ документа SAP</run></par></tablecell>
    <tablecell bgcolor='silver'><pardef id='10' align='center'/><par def='10'><run><font size='8pt'/>Дата документа SAP</run></par></tablecell>
    <tablecell bgcolor='silver'><pardef id='11' align='center'/><par def='11'><run><font size='8pt'/>Контрагент</run></par></tablecell>
    <tablecell bgcolor='silver'><pardef id='12' align='center'/><par def='12'><run><font size='8pt'/>Кол-во страниц</run></par></tablecell>
    <tablecell bgcolor='silver'><pardef id='13' align='center'/><par def='13'><run><font size='8pt'/>в„–</run></par></tablecell>
    </tablerow></table>

    кто знает есть ли какой способ этот DXL переобразовать в таблицу ?
    и какие методы для этого использовать?
     
  2. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
  3. StarikStarik2705

    StarikStarik2705 Well-Known Member

    Регистрация:
    8 фев 2012
    Сообщения:
    103
    Симпатии:
    0
    Function AppendAsRT (rtitem As NotesRichTextItem, dxl As String,parent As NotesDocument) As String
    On Error Goto processError
    '** if no rich text item was given to us, just exit without doing anything

    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim body As NotesRichTextItem
    Dim importer As NotesDXLImporter
    Dim ws As New NotesUIWorkspace

    Set db = session.CurrentDatabase
    Set importer = session.CreateDXLImporter(dxl, db)
    importer.ReplicaRequiredForReplaceOrUpdate = False
    importer.DocumentImportOption = DXLIMPORTOPTION_CREATE
    Call importer.Process

    Set doc = db.GetDocumentByID(importer.GetFirstImportedNoteId)
    Set body = doc.GetFirstItem("Body")
    Set rtitem = parent.GetFirstItem("Body")
    Call rtitem.AppendRTItem(body)
    Call rtitem.Update
    Call doc.Save(True,False)
    Call parent.ReplaceItemValue("SaveOptions","0")
    Call ws.RefreshParentNote



    Exit Function
    processError:
    If (importer.Log <> "") Then
    AppendAsRT = importer.Log
    Else
    AppendAsRT = "Error " & Err & " on line " & Erl & ": " & Error$
    End If
    Exit Function
    End Function

    я написал такой код, он из одно рич поля(моего DXL) ложит инфу в другое, но что странно, почему если портянка всего одну страницу, то всё конвертирует, а если скажем страниц 20 то ничего не происходит. Связано ли это с ограничением стрима?
     
  4. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    Кажись это связано с ограничением импорта из dxl, в версии 6.5 нельзя было так обновлять большие агенты и библиотеки, как раз примерно страниц 10-15 на формате А4. Видимо далее это не фиксилось.
     
  5. StarikStarik2705

    StarikStarik2705 Well-Known Member

    Регистрация:
    8 фев 2012
    Сообщения:
    103
    Симпатии:
    0
    наверно тогда то что я задумал не возможно сделать в связи с этим ограничением, я поиском нашёл 50 доков, и портянка ДХЛ получилась внушительная. И поетому если не фиксилось, то дальше развивать задание наверно безсмысленно
     
  6. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    CтарыйStarik
    Изначальное требование какое? Что требуется получить? Это связано с hot-spot?
     
  7. StarikStarik2705

    StarikStarik2705 Well-Known Member

    Регистрация:
    8 фев 2012
    Сообщения:
    103
    Симпатии:
    0
    требование такое, есть форма "поиск", нажимаю "Найти", в колекцию попадает сколько там документов.
    результат - в РТ поле нарисована табличка, в
    первой колонке которой кубик жёлтый с ссылкой на сам документ
    второй ссылка на документ в представлении
    третья и дальше информация из полей документа

    я начал делать через выгрузку изза того что методы RICHTExt классов не позволяют сделать HotSpot. Да ещё и с тем кодом которым я хочу
    вот такое задание
     
  8. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    а вот этот параметр обязателен "второй ссылка на документ в представлении" ?
     
  9. StarikStarik2705

    StarikStarik2705 Well-Known Member

    Регистрация:
    8 фев 2012
    Сообщения:
    103
    Симпатии:
    0
    да, именно из за него я начал это путь с ДХЛ
     
  10. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    хм...теперь даже интересно как это сделать...
    любой документ найти в другом представлении из текущего: клик на документ, Ctrl + клик мышью на нужном представлении.
    Можно было бы кидать результаты в личную папку и объяснить им как переходить.

    Если уж продолжать тему dxl. Пока в голову приходит только попробовать загрузить dxl через java, может она сможет обработать такой объем.
    Либо разделить результаты и загружать по частям. Типа в одном dxl только 10 документов, если документов 50, то 5 dxl разных.
    Загружаем последовательно все dxl в базу, создаем временные доки, затем обращаясь к rt-полю каждого дока добавляем его в наш документ-результат, методом AppendRTItem. Но это изврат.

    А ошибок при импорте "протыни" нет?
     
  11. alexas

    alexas Well-Known Member

    Регистрация:
    10 июн 2009
    Сообщения:
    215
    Симпатии:
    0
    доки грузите в приватную папку,
    результат - вместо РТ таблички, папка с доками, можно оформить так, что практически не будет отличаться от РТ таблицы.
    - в первой колонке размещаете картинку "кубик желтый", переход на документ - код в InViewEdit папки (для первой колонки)
    так-же в InViewEdit (для второй колонки или для всех, кроме первой) запоминаете UNID этого дока, открываете нужный View, по запомненному UNID позиционируютесь на документ.
    Т.о. логика и дизайн соответствуют заданию плюс бонус - скролинг в таблице. Так-же, в этом случае, можно на форме разместить прогресс-бар и кнопку прекращения поиска, если нужный юзеру док уже в папке (для этого грузить доки в папку в фоновом режиме и при загрузке очередных 10-20 штук доков - рефрешить папку).
    Я бы делал так.
     
  12. swyatogor

    swyatogor Lotus team
    Lotus team

    Регистрация:
    24 фев 2014
    Сообщения:
    432
    Симпатии:
    10
    я тут смотрю только я наверное в DXL не ковырялся никогда..
    Вопрос.. подскажите как in-line image откорретировать по размеру отображения))
    Как выгрузить документ в файл xml я понял, вроде получается.. нашел глазами по тегам где лежит такая картинка.. а как её програмно отредактировать и вернуть обратно документ?
    в частности вот такую строку:
    Код (Text):
    <par def='2'><picture width='1366px' height='728px'><gif>
    изменить ширину и высоту..
     
  13. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
    @swyatogor "эти" параметры не поменяю саму картинку...
    картинку надо взять и отресайзить, она там в base64, код по выдергиванию всего, чего не попало, из дока - я выкладывал (на java)
    ресайз - тоже где-то, здесь, валяется
     
    #13 lmike, 2 ноя 2016
    Последнее редактирование: 2 ноя 2016
  14. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
    алгоритм: doc->SAX->files + DXL->resize gif->replace DXL part (м.б. какой удобно инструмент)->import DXL (с заменой дока)
     
  15. swyatogor

    swyatogor Lotus team
    Lotus team

    Регистрация:
    24 фев 2014
    Сообщения:
    432
    Симпатии:
    10
    @lmike, а мне ее физически ресайзить (т.е. менять ее физические размеры, переконвертировать) и не нужно.. мне нужно чтобы она отображалась меньше по масштабу- т.е. влазила по ширине куда нужно))..
     
  16. swyatogor

    swyatogor Lotus team
    Lotus team

    Регистрация:
    24 фев 2014
    Сообщения:
    432
    Симпатии:
    10
    оказывается просто нужно "дописать" параметры отображения
    Код (Text):
    <par def='2'><picture width='1366px' height='728px' scaledheight='3.5833in'
    scaledwidth='7.1146in'><gif>
    вот последние два это как раз таки масштабирование..

    хотя можно не париться и менять просто ширину и высоту)
     
    #16 swyatogor, 2 ноя 2016
    Последнее редактирование: 2 ноя 2016
  17. swyatogor

    swyatogor Lotus team
    Lotus team

    Регистрация:
    24 фев 2014
    Сообщения:
    432
    Симпатии:
    10
    Другой вопрос.. а как заставить экспортера сохранять файл в формате UTF-8.. а то он по умолчанию его сохраняет как cp1251.. а импортер его потом не понимает((
     
  18. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
    дык стриму прописать кодировку
     
  19. swyatogor

    swyatogor Lotus team
    Lotus team

    Регистрация:
    24 фев 2014
    Сообщения:
    432
    Симпатии:
    10
    Добрый лень..

    Ктонить сталкивался с задачей - удалить отдельно взятый child у ноды?..
    Как ни пробую не получается.. или пишел ошибка Дом, или просто клиент виснет и вываливается((
    Вот так ошибка при попытке удалить:
    Код (Text):
                            Set childs = node.GetElementsByTagName("tablecolumn")
                            Print "Детей получили" + Cstr(childs.NumberOfEntries)
                            For q =1 To childs.NumberOfEntries
                                Set child = childs.GetItem(q)
                                Set child =  node.RemoveChild(child)
                            Next
     
    Вот так зависание клиента при попытке взять следующий child:
    Код (Text):
                         
                            Do Until Isnull(nodeChild)
                              If nodeChild.NodeName="tablecolumn" Then
                                  Set child =  elt.RemoveChild(nodeChild)  
                                  Print "Удалили"
                              End If
                              Print "Берем следующий"
                              Set nodeChild = elt.NextSibling
                            Loop
     
     
  20. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    @swyatogor а если сначала взять следующий и только потом удалить?
     
Загрузка...
Похожие Темы - Переобразование Dxl
  1. Lia
    Ответов:
    15
    Просмотров:
    1.080
  2. ty3uk
    Ответов:
    16
    Просмотров:
    1.946
  3. susinmn
    Ответов:
    2
    Просмотров:
    1.128
  4. susinmn
    Ответов:
    2
    Просмотров:
    1.159
  5. Rosna
    Ответов:
    6
    Просмотров:
    2.099

Поделиться этой страницей