Йоксель » Главный форум

печать йокселя

(21 posts)

Тэги:

  1. Хочется иметь возможность вместо печати сохранять табличный документ в файл ps или pcl.
    т.е. в параметры печати добавить свойство ИмяФайла.

    И при вызове метода Напечатать(0) если свойство ИмяФайла - непустая строка, то происходило бы сохранение печатной формы в файл в формате выбранного принтера (аналог включения чекбокса "печать в файл" в диалоге выбора принтера)

    Отправлено 16 года(лет) назад #
  2. Ага, а на полученный ps натравить GhostScript и сделать PDF :)
    Но сдается мне, что максимум, что может сделать приложение, это установить признак печати в файл. Это приведет к тому, что Windows у юзера попросит указать в какой файл нужно распечатать документ. А возможность указать файл из приложения я что-то пока не нашел.

    Возможно, окажется, что единственный выход - это написание своего драйвера порта (по типу Redmon) и налаживание с ним взаимодействия в прикладной программе.

    Отправлено 16 года(лет) назад #
  3. Объясню, зачем это нужно.

    Нужно из 1с отправлять по e-mail некоторые документы в формате, пригодном для печати, но без возможности изменить документ. Было проведено некоторое исследование, и принято решение использовать для этого формат pdf. Из всех (ну может и не всех) возможных способов генерации pdf был выбран способ генерации pdf из PostScript.
    PostScript можно получить выполнив "печать в файл" на принтере с PostScript-драйвером.
    Выполнить "печать в файл" можно из Excel, но покупать еще одну лицензию и устанавливать офис на терминальный сервер очень не хочется.

    Отправлено 16 года(лет) назад #
  4. Я так и знал :) А что в Excel действительно можно программно распечатать документ в конкретный файл?

    Отправлено 16 года(лет) назад #
  5. Ага, а на полученный ps натравить GhostScript и сделать PDF :)

    телепат :)

    А возможность указать файл из приложения я что-то пока не нашел.

    Excel как-то с этим справляется.
    покопай, пожалуйста, еще

    Возможно, окажется, что единственный выход - это написание своего драйвера порта (по типу Redmon)

    да ну его нафиг этот Redmon. Решение должно быть работоспособным и в терминале и без него.

    Отправлено 16 года(лет) назад #
  6. А что в Excel действительно можно программно распечатать документ в конкретный файл?

    можно.
    Sub PrintOut([From], [To], [Copies], [Preview], [ActivePrinter], [PrintToFile], [Collate], [PrToFileName])

    Отправлено 16 года(лет) назад #
  7. > Excel как-то с этим справляется.
    > покопай, пожалуйста, еще

    Ага, вроде уже что-то накопалось. Если знать, что проблема имеет решение, все становится гораздо проще :)

    Отправлено 16 года(лет) назад #
  8. Если знать, что проблема имеет решение, все становится гораздо проще :)

    Верно подмечено! :)

    И еще одна деталь: можно ли сделать так, чтобы метод Напечатать не возвращал управление до тех пор, пока документ не напечатается. Или сделать такое поведение опциональным.

    Отправлено 16 года(лет) назад #
  9. Тот метод, который позволяет печатать в файл заодно предоставляет некоторые средства проследить за дальнейшей судьбой задания. Так что все очень удачно складывается. :)

    Отправлено 16 года(лет) назад #
  10. А почему бы не использовать GPL`ный PDFCreator http://www.pdfforge.org/products/pdfcreator ? Он поддерживает все свои настройки через COM, процедура печати в PDF помещается в несколько строк. Все можно из самой 1С организовать. Да и в почту он файлы тоже сам кидать по mapi может.
    Примеры использования COM (почти для всего) есть в комплекте.

    Отправлено 16 года(лет) назад #
  11. PDFCreator был отвергнут из-за невозможности использования PDFsecurity.
    к тому-же он пару раз завис при тестах.

    Отправлено 16 года(лет) назад #
  12. Работать с pdfsecurity PDFCreator все-таки может.
    Вчитался в доку внимательнее и нашел все-таки как запретить изменение и извлечение содержимого документа в PDFCreator.

    Отправлено 16 года(лет) назад #
  13. Так я не понял, печать в файл нужна или нет? :)

    Отправлено 16 года(лет) назад #
  14. 2steban только что проверил примерно как здесь: http://www.excelguru.ca/node/31 защита сработала т.е. не открывает без пароля, не печатает когда есть защита и т.п. Падений на версии 0.9.7 не заметил (правда и тестил то раз 50 всего), правда глючит .cClose() - нельзя использовать (отваливается сохранение, требуется перезагрузка), но кто у нас не без греха ;)

    Отправлено 16 года(лет) назад #
  15. 2Oleg тут такая штука... если steban подтвердит что PDFCreator все таки работать может, было бы интересно увидеть "безшовную" его интеграцию через "Сохранить" в Йокселе.
    Методов у PDFCreator - кот наплакал, а преимущества очевидны. Ну и GPL конечно. И вообще, тогда бы PDFCreator рассматривался как плагин для Йокселя :D
    Правда я смотрю с точки зрения Linux, там такие цепочки при конвертировании - штатный режим работы.

    Отправлено 16 года(лет) назад #
  16. Так я не понял, печать в файл нужна или нет? :)

    Нужен способ генерить в 1с PDF-документ, который можно только напечатать и нельзя изменить.

    Мне показалось, что "печать в файл" реализуется просто. Потому и выдвинул такую хотелку.

    способов достичь желаемого множество:

    • найти какой-нибудь инструмент для непосредственной генерации PDF. В виде ActiveX или какой-нибудь либы, для которой можно было бы написать обертку в виде ВК. pro: удастся генерить документ без всяких левых принтеров. contra: программисту, который будет писать генерирующий код на 1с, прийдется разбираться в структуре PDF, самостоятельно заботиться о разбиении на страницы и учитывать кучу всяких ненужных мелочей. Из найденных инструментов такого рода ни один не удовлетворил всем требованиям: либеральная лицензия типа GPL, корректная работа с кириллическими шрифтами, возможность использования PDF security.
    • всякие разные PDF-принтеры. pro: можно генерить документ в любом удобном формате (mxl, xls, html и т.п.) не зная ничего о формате PDF. contra: дополнительные хлопоты сисадмина по установке и настройке этих принтеров и заморочки, связанные с асинхронной природой очередей печати.
    • ИМХО идеальный вариант - возможность непосредственно преобразовать в PDF какой-нибудь формат, удобный для программной генерации (например MXL)
    Отправлено 16 года(лет) назад #
  17. Вот если бы существовал какой-нибудь С++ класс с интерфейсом типа GDI, который на выходе бы генерировал PostScript.
    Тогда небольшим допиливанием графического конвертера йокселя задачу удалось бы решить просто и элегантно.
    Можно было бы пойти еще дальше: если в системе найден gsdll32.dll то графический конвертер йокселя мог бы сразу и PDF сделать ;)

    Отправлено 16 года(лет) назад #
  18. ИМХО идеальный вариант - возможность непосредственно преобразовать в PDF какой-нибудь формат, удобный для программной генерации (например MXL)

    Это да :) Я много раз прикидывал, не начать ли реализацию конвертера. Дело в том, что для Йокселя это очень заманчивая задача. Это связано с тем, что PDF по сути это не файл документа, а векторный графический файл - этакий EMF-переросток. Поэтому сконвертировать документ в PDF, значит НАРИСОВАТЬ документ средствами PDF. В Йокселе для отрисовки не используются прямые вызовы API, а все происходит через промежуточный слой, который легко подменить на что-то другое - например, на слой, который команды отрисовки будет транслировать в инструкции PDF. Останавливает сложность - PDF формат непростой. И некоторые вещи пока вообще не ясны - например, не совсем понятно, как помещать в PDF русский текст. Т.е. здесь нужно глубоко копать и сколько займет написание конвертера неизвестно. Скорее всего, несколько месяцев. При этом все остальное будет вообще стоять. Я не могу пока на такое пойти. И так все идет не слишком быстро.

    Нужен способ генерить в 1с PDF-документ, который можно только напечатать и нельзя изменить.

    Мне показалось, что "печать в файл" реализуется просто. Потому и выдвинул такую хотелку.

    А как в итоге - тебе еще нужна печать в файл? Сделать действительно не сильно сложно. Уже хотел даже садиться делать, но в свете этой ветки приостановился. :) Чебур очень настойчиво пристает по поводу PDF - наверное, больше года уже. :) Если эту задачу можно было хорошо продвинуть - было бы очень неплохо.

    Отправлено 16 года(лет) назад #
  19. Вот если бы существовал какой-нибудь С++ класс с интерфейсом типа GDI, который на выходе бы генерировал PostScript.

    А я кстати пытался такой сделать, но завис на русском тексте - нужно внедрение шрифтов, а тут проблемы довольно здоровенные всплывают. Мне кажется, что даже PDF генерить проще, чем PostScript.

    Отправлено 16 года(лет) назад #
  20. А как в итоге - тебе еще нужна печать в файл? Сделать действительно не сильно сложно.

    Можем притормозить вопрос на некоторое время.
    Решение типа "печать в файл" тоже не лишено недостатков.

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

    Отправлено 16 года(лет) назад #
  21. В смысле, сам хочешь заняться? Может, тогда набор интерфейсов какой-нибудь сделать? Скажем, набор COM-интерфейсов для GDI-примитивов. Этот набор экспортирует некий модуль, подключаемый к Йокселю (или подключающий к себе Йоксель). Далее в Йоксель передается документ и интерфейс к GDI-примитивам. Йоксель через этот интерфейс выполняет отрисовку документа. Подвязанный модуль GDI-команды преобразует в чего ему надо (PostScript, PDF и т.п.)

    Отправлено 16 года(лет) назад #

RSS экспорт этой темы

Отправить сообщение

Вы должны войти в систему, чтобы оставлять сообщения.