Как запустить pdf-файл?

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

  1. mike

    mike Well-Known Member

    Регистрация:
    25 апр 2005
    Сообщения:
    45
    Симпатии:
    0
    подскажите, пож, надо, чтобы в форме при нажатии на кнопку (или ссылку) открывался файл pdf по заранее сгенерированному маршруту
    не могу понять, какую использовать команду?
    файл должен открываться внешним ридером
    спасибо!
     
  2. Dragon108

    Dragon108 Well-Known Member

    Регистрация:
    19 янв 2010
    Сообщения:
    264
    Симпатии:
    0

    @Command([Execute])

    Ссылка
     
  3. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    если файл существует или лежит уже на диске, то можно на java открыть.
    Открывает тем приложением, которое привязано к данному типу файла: #3.
     
  4. mike

    mike Well-Known Member

    Регистрация:
    25 апр 2005
    Сообщения:
    45
    Симпатии:
    0
    спасибо за помощь!
    команда открывает файл и как вариант может быть использована, одно из очевидных неудобств - необходимость прописывать маршрут к приложению:
    @Command( [Execute]; "C:\\Program Files (x86)\\Adobe\\Reader 10.0\\Reader\\AcroRd32.exe"; "file.pdf" )
    при различных виндах и версиях акробат-ридера - может стать проблемой

    буду пробовать второй вариант с java (никогда не пользовался ею в лотусе)
     
  5. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    Можно создать новую форму, выставить ей свойство "launch first attachment", приаттачить файл во временный документ и открыть док по указанной форме: http://codeby.net/ipb.html?s=&sh...st&p=171290
     
  6. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    у меня так факсы открываются (факсбокс сделал на Hylafax->mail->LDN)
     
  7. Ruslan280

    Ruslan280 Well-Known Member

    Регистрация:
    18 апр 2013
    Сообщения:
    49
    Симпатии:
    0
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">на WinAPI</div></div><div class="sp-body"><div class="sp-content">
    Код (LotusScript):
    Sub Click(Source As Button)
    Dim info As SHELLEXECUTEINFO
    info.cbSize = Len(info)
    info.fMask   = SEE_MASK_NOCLOSEPROCESS Or SEE_MASK_FLAG_NO_UI
    info.lpVerb  = "open"
    info.lpFile   = "c:\test\1.pdf"
    info.nShow  = 5
    info.hInstApp = 0
    info.lpIDList  = 0
    openex = ShellExecuteEX(info)
    End Sub
    и в Declarations
    Код (LotusScript):
    Type SHELLEXECUTEINFO
    cbSize As Long
    fMask As Long
    hwnd As Long
    lpVerb As String
    lpFile As String
    lpParameters As String
    lpDirectory As String
    nShow As Long
    hInstApp As Long
    lpIDList As Long
    lpClass As String
    hkeyClass As Long
    dwHotKey As Long
    hIcon As Long
    hProcess As Long
    End Type
    Const SEE_MASK_INVOKEIDLIST = &HC
    Const SEE_MASK_NOCLOSEPROCESS = &H40
    Const SEE_MASK_FLAG_NO_UI = &H400
    Declare Private Function ShellExecuteEX Lib "shell32" Alias "ShellExecuteEx" (lpExecInfo As SHELLEXECUTEINFO) As Long
    проверил-работает. но только на винде.
     
  8. mike

    mike Well-Known Member

    Регистрация:
    25 апр 2005
    Сообщения:
    45
    Симпатии:
    0
    спасибо, вариант интересный, но не подходит, т.к. задача немного другая-атаченных файлов нет.
    Есть многогигабайтный упорядоченный файловый архив сканов (договоров) в pdf-формате.
    Ключом к архиву будет являться лотус база. Юзер находит нужный документ в базе и по кнопке открывает его скан из файлового архива, путь к которому известен.
     
  9. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    запланировать миграцию в LDN + DAOS
    т.е. по ключу же из нотуса в негоже и аттачить, БД подрубить к ДАОС
    и схема вполне подойдет :)
     
  10. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    770
    Симпатии:
    50
    Странно... С чего бы это? :)
     
  11. Ruslan280

    Ruslan280 Well-Known Member

    Регистрация:
    18 апр 2013
    Сообщения:
    49
    Симпатии:
    0
    Странно... С чего бы это?


    я в том смысле что будет работать только на винде )
     
  12. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    если запускаем ср-вами шела - дык зачем юзать винапи?

    Добавлено:
    Добавлено: в винде - cmd.exe, в никсах (к коим и мак относится) - bash (в линухах еще gvfs-open)
     
  13. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    770
    Симпатии:
    50
    Если запускаем через Shell надо знать какой программой открыть файл и где она расположена, через ShellExecute WinAPI "запускаем" только файл, который откроется в приложении, связанном с расширением этого файла. Как я уже "упоминал" выше, самый простой платформеннонезависимый способ URLOpen.
     
  14. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    770
    Симпатии:
    50
    По-моему, не прокатит... или я ошибаюсь?
    Код (LotusScript):
    Shell ("cmd.exe myfile.pdf")
    Так?

    Добавлено:
    Это потому, что в FireFox вживлена смотрелка PDF файлов, в Chrome тоже, вот он её и пытается запустить. Если отключить эту надстройку в браузере, то будет открываться в другой программе (Acrobat Reader, Foxit, Evince и пр.)
     
  15. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    Это уже из придирок, но: не всегда можно донести это до конечного пользователя, поэтому я выбрал java.
     
  16. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    немного не так, а вот так - result=Shell({cmd.exe /c "C:\Program Files\lotus\notes\EDGE LL III.pdf"})
    замечательно работает
     
  17. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    770
    Симпатии:
    50
    Сегодня как раз у одного пользователя с 9-ой Desktop.getDesktop().open(filename) выскочило с ошибкой AccessControlException. Файл java.policy такой же как и на 8-ке. Правда у него Foxit стоит вместо Acrobat Reader, но не думаю что из-за этого. А из-за чего непонятно.
     
  18. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    а вот так: Process p = Runtime.getRuntime().exec(***);
    не пробовали?
    9ки нет, хотелось бы узнать на будущее
     
  19. mike

    mike Well-Known Member

    Регистрация:
    25 апр 2005
    Сообщения:
    45
    Симпатии:
    0
    1. @URLOpen (полныйпутькфайлу) - виснет лотус с ошибкой, мол не может открыть ресурс
    2. Call ws.URLOpen("file:////C:\\insidenotes.pdf",,,,,,,,True) - тоже не проходит:

    [​IMG]
     
  20. mike

    mike Well-Known Member

    Регистрация:
    25 апр 2005
    Сообщения:
    45
    Симпатии:
    0
    Этот вариант действительно работает,спасибо!
    мне нравится)
     
Загрузка...

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