Print, Landscape

wowa

Well-known member
01.02.2007
848
0
#1
Возможно ли сделать кодом печать на альбомном расположении листа?

P.s. Orientation: Landscape
 

Omh

Lotus team
04.07.2007
2 210
1
#2
Через WinAPI
Ща ещё lmike вариант на джаве подскажет...

Вот что-то.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 600
277
#3
ябы не заморачивался :)
ибо через винапи людя ходють не один год и кажный раз получают граблями и больно :)
первое во что упрутся - права на принтерный контекст

сморя чё печатаем...
воще... печать не самая сильная сторона Нотуса (и РТФ в частности) ;)
а потому есть пожелания - строить процесс таким образом, что бы печатать инфу не из нотуса

и на последок - вот людя домучались, пробуйте (но не жалуйтесь)
http://web3.inttrust.ru/Site/itforum.nsf/a...29?OpenDocument
 
K

Klido

#4
ещё в конце 90-х на 3-4 лотусину в инете уже были готовые классы для работы с принтерами... не помню уже API там было или нет :) но работало - правильные драйвера под любой принтер и печатали хоть что - я конкретно печатал векселя (на бланк строгой отчетности) из диалоговой формы...
так что наверняка на каком-нить openntf.org всё это добро есть...

но IBM жжет как всегда - цитата из дизайнерского хелпа 8.5

This code prints the selected documents from a view in landscape format. Add this code to an agent that has Action menu selection chosen as the trigger and None as the target.
@Command([FilePrint])
When the Print View dialog box displays, select landscape as the orientation on the Page Setup tab, then press Ok.
 

nvyush

Lotus team
22.04.2009
2 317
0
#5
Недавно столкнулся с необходимостью печатать бланк в альбомной ориентации. Выгружать в word, excel, а тем более разбираться с FOP ради такой ерунды не хотелось. Предложенные выше решения показались громоздкими. Попробовал SendKeys, но в справке по Лотусу честно сказано, что в клиенте она не работает (а на фига она тогда нужна?). Подсказку нашёл здесь Выделить программно документы в виде (uiview.selectdocument). Испытывалось под виндой в клиенте 8.0.2. Может кому поможет:
Код:
Declare Sub keybd_event Lib "user32" (Byval bVk As Byte, Byval bScan As Byte, Byval dwFlags As Long, Byval dwExtraInfo As Long)

Const KEYEVENTF_KEYDOWN = &H0
Const KEYEVENTF_KEYUP = &H2

Sub Initialize
'ctrl+P - открываем диалог печати
keybd_event VK_CONTROL, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_P, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_P, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0
'shift+tab - переходим на закладки
keybd_event VK_SHIFT, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_TAB, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_TAB, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_SHIFT, 0, KEYEVENTF_KEYUP, 0
'right - переходим на закладку параметров страницы
keybd_event VK_RIGHT, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_RIGHT, 0, KEYEVENTF_KEYUP, 0
'alt+a - выбираем альбомную ориентацию
keybd_event VK_MENU, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_A, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_A, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
'enter - жмём ОК
keybd_event VK_RETURN, 0, KEYEVENTF_KEYDOWN, 0
keybd_event VK_RETURN, 0, KEYEVENTF_KEYUP, 0
End Sub
Коды клавиш можно посмотреть здесь http://api.farmanager.com/ru/winapi/virtualkeycodes.html
 

TIA

:-)
Lotus team
15.05.2009
790
3
#6
nvy
Попробуй перед выполнением кода переключиться на русскую раскладку клавиатуры (ну или какая у тебя там кроме английской).
Alt+A теоретически не должно отработать.
 

hosm

* so what *
18.05.2009
2 442
6
#7
TIA ну вот вечно ты придерешься :trash: имхо, молодец, но надо же всю инфу давать...
да мне лично вообще варианты с keybd_event не по душе, но раз уж так - вроде где-то на винапи попадался код опроса текущей раскладки и переключения раскладок (даже что-то пробовалось когда-то - правда, не понадобилось пока)