• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

PDFCreator и UIDoc.Print()

  • Автор темы dobozy
  • Дата начала
D

dobozy

Доброе время суток всем,

Столкнулся с такой проблемой, может кто встречал, чтобы не копать сильно глубоко...

Я использую PDFCreator COM для того чтобы программно PDF-ить лотус ноутс документы. Задача архивирования передо мной стои в общем.
Всё было хорошо, всё прикурил, плюс iText для изменение метаданных и аттачей. Есть документ с полями RTF, в совершенно произвольно отформатированный контент и походу аттачи вставлены. Идея использования PDFCreator заключалась в том, чтобы максимально сохранить форматирование, расположение объектов в поле в результирующем PDF. Пробовал всякие тулзы типа n2dpf и Swing. Все они работают, но не всегда всё парсят и иногда недосчитываешься некоторый аттачей например. Решил я взять PDFCreator так он давал наилучший результат "визуальный слепок" документа. Он так и делает, если печатать документ через обычный Lotus Notes принт диалог, но проблемы иногда возникают, если печатаешь программно. Собственно грабли с которыми я сегодня познакомился:

1. Есть документ, в нём РТФ поле с кучей аттачей по телу. Местами по несколько подряд.
2. Если открываешь документ руцями, а потом говоришь Печать через меню, вылетает диалог, говоришь хочу печатать в PDFCreator и вуаля. PDF получаеться нормальный, все картинки для аттачей присутсвуют.
3. Берешь делашь программно:

...
Код:
Set uidoc = uiws.EditDocument(False, doc)
Call uidoc.Print(1)
'Call uidoc.Print(1,0,0,False)

В некоторых напечатанных документах, некоторые иконки приаттаченый файлов отсутсвуют. Что за хрень???
Если пишешь

Код:
Call uidoc.Print()

Вылетает принт даилог, пускаешь через него, всё путём.
Я в шоке :)

Что делать? Неужели опять через АPI идти.

Спасибо!
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
215
здесь всё зависит от того - как индусы печать реализовали... (виндозную)
печать и UI не явл. сильными сторонами нотусов
 

NetWood

Lotus Team
17.04.2008
545
93
BIT
8
Ну поскольку Вам тема PDF близка, то вот сюда загляните
link removed
мы с lmike делали. Там есть ссылка на GoogleDoc проект
link removed

Может допилите и, это, присоединяйтесь к команде.
 
D

dobozy

Всем привет!

Разобрался!!!

Проблема в том, что в свойствах принтера нужно было сказать, печатать прямо на принтер, а не через очередь печати. Через очередь печати глючит.

Так что тулза начала работать как и предпологалось.
Получаются неплохие PDF-ы, если учитывать, что нужно уметь выгружать лубые формы из лубых приложений. Там бывает такая каша, типа в РТФ вставляю письма картинки аттачи и всякую хрень. Верстка оригинальная, не там кончено иногда страницы заканциваются, но зато ничего не теряется по пути, плюс аттачи леплю и метаданный пишу.
Короче, надеюсь, что клиента устроит для архивирования.

Есть конечно иногда проблемы, когда таблица вставлена из какого-то места и непонятно каким местом и она просто не влазит в портретную ориентацию. Теперь бы повернуть листы в альбом, но тут я понять без API уже никак...
Может у кого есть готовые мысли, чтобы не копать долго.

Всем спасибо!
 
D

dobozy

Всем привет опять!

Я бюл неправ, когда предположил, что это настройки принтера.
Оказывается, что проблема исходит от того, что вызов
Код:
Set m_uidoc = m_uiws.EditDocument(False, doc)
является частично асинхронным и код начитает топать дальше недождавшись пока прорисуются все иконка аттачей...

Обошёл тем, что печатаю через
Код:
Call m_uiview.Print(1,0,0,"PDFCreator")
С кучей извратов до и после :), чтобы печатать по одному выделенному документу, но главное что вроде нет такой проблемы...
 

maliy

Green Team
20.03.2007
180
2
BIT
45
to dobozy, если не трудно скинь пример кода по использованию PDFCreator в лотусе...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!