PDFCreator и UIDoc.Print()

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

dobozy

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

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

Я использую 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

нет, пердело совершенство
Премиум
27.08.2008
6 567
263
#2
здесь всё зависит от того - как индусы печать реализовали... (виндозную)
печать и UI не явл. сильными сторонами нотусов
 

NetWood

Lotus team
17.04.2008
372
18
#3
D

dobozy

#4
Всем привет!

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

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

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

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

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

dobozy

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

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

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

maliy

Well-known member
20.03.2007
164
2
#6
to dobozy, если не трудно скинь пример кода по использованию PDFCreator в лотусе...