Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 20, 2008 18:47:55

sbar
От:
Зарегистрирован: 2007-08-15
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Как распечатать документ

igor.kaist
Не со всеми принтерами
Действительно, с моим физическим принтером (canon pixma ip1500, струйник) не сработало (появляется в очереди файл и тут же исчезает), только с pdf-принтером.
Есть ли свободный или хотя бы бесплатный (не shareware) аналог Foxit Reader (или что-то аналогичное, важна только печать из консоли postscript, pdf или хотя бы картинки (любой: векторной, растровой))?
На счет win32print — возможно ли его заставить работать в Python 2.5?



Отредактировано (Окт. 20, 2008 18:51:39)

Офлайн

#2 Окт. 20, 2008 20:38:24

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Как распечатать документ

sbar
На счет win32print — возможно ли его заставить работать в Python 2.5?
он работает!!! Я сам проверял лично! В 4 посте я описывал варианты, которые испробывал лично.
В pywin32 есть даже рабочие примеры. Из одного из них (распечатка скриншота экрана), ты сможешь соорудить свой пример. Можно в PIL формировать документ вообще и выводить его на печать как картинку :)
Я сам сейчас бьюсь над одной задачей… Как мне печатать изображения с настройками какие позволяет принтер, то есть грубо говоря вывести не документ а фото 10х15 в фото режиме



Офлайн

#3 Окт. 20, 2008 22:51:07

sbar
От:
Зарегистрирован: 2007-08-15
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Как распечатать документ

Ага. Видимо проект раньше назывался win32all, я сначала скачал его и для 2.5 его не оказалось.
Но все равно для моего принтера не срабатывает. :( Получается та же ерунда, что и с командой print: на короткое время появляется в очереди файл и исчезает (по крайней мере венда так считает, до принтера вряд ли что-то доходит, ибо он должен мигнуть лампочкой при принятии инфы).



Офлайн

#4 Окт. 20, 2008 23:15:59

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Как распечатать документ

То что там в примерах это не постскрипт! убедись что у тебя твой принтер стоит в системе как принтер по умолчанию. Когда смотришь на вывод примера в консоль, посмотри название принтера, оно должно промелькнуть. Я и с лазерником пробовал и со струйником, все было пучком. Там используется вин апи, для отправки битмапа на печать а не постскрипт. С постскриптом у меня тоже не вышло



Офлайн

#5 Окт. 21, 2008 00:19:08

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Как распечатать документ

sbar
Есть ли свободный или хотя бы бесплатный (не shareware) аналог Foxit Reader (или что-то аналогичное, важна только печать из консоли postscript, pdf или хотя бы картинки (любой: векторной, растровой))?
Есть Sumatra PDF. Из консоли печатает.
http://blog.kowalczyk.info/software/sumatrapdf/index.html



Офлайн

#6 Окт. 21, 2008 21:35:21

sbar
От:
Зарегистрирован: 2007-08-15
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Как распечатать документ

igor.kaist, PIL+win32print работает, спасибо (рабочий пример тут брал).

igor.kaist
Tkinter.Canvas+win32print или PIL+win32print, генерится сначала postscript, затем он отправляется на печать. Этот способ медленный уж очень, да и не со всеми принтерами работает
С какими например? Или это имелось ввиду что postscript не всеми принтерами поддерживается? Просто PIL+win32print нормально распечатает картинку (не postscript) на всех принтерах?

shiza
Есть Sumatra PDF. Из консоли печатает.
Попробовал распечатать им из консоли: выдалось окно с pdf и повисло. Памяти съело 100 Mb. Ничего не распечаталось.
Впрочем это не совсем то: есть ли такая софтина, которая просто молча распечатает (не выводя никаких окон и никаких сообщений)? Просто распечатает и в случае неудачи вернет exitcode != 0?



Отредактировано (Окт. 21, 2008 21:40:18)

Офлайн

#7 Окт. 22, 2008 07:13:53

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Как распечатать документ

С PIL и win32 все нормально на всех имеющихся у меня принтерах (на 4 запускал), так как это не постскрипт а Вин апи.
Вообще, извращенство, но в PIL можно и документ срендерить.. В большинстве случаев, много ли нужно: текст разными шрифтами, да таблицы



Офлайн

#8 Ноя. 7, 2008 23:26:56

sbar
От:
Зарегистрирован: 2007-08-15
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Как распечатать документ

А может кто-нибудь привести простой пример печати через pycups? А то документации по нему я что-то совсем не нахожу, и в help(cups) не нашел как распечатать.

UPD: вот такой код должен работать? У меня не печатает:

import cups

cups.setUser("root")
cups.setServer("localhost")
c = cups.Connection()
c.printFile("/usr/share/pixmaps/inkscape.png", c.getDefault(), "", {})



Отредактировано (Ноя. 9, 2008 00:41:35)

Офлайн

#9 Дек. 4, 2008 22:43:45

sbar
От:
Зарегистрирован: 2007-08-15
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Как распечатать документ

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

#!/bin/env python
# -*- coding: utf-8 -*-

import gtk, pango

def draw_page(operation, context, page_nr):
cairo_context = context.get_cairo_context()
width = context.get_width()

cairo_context.fill()
layout = context.create_pango_layout()

description = pango.FontDescription("Times New Roman 12")
layout.set_font_description(description)

layout.set_text("\n\nTest")
layout.set_width(int(width))
layout.set_alignment(pango.ALIGN_CENTER)

cairo_context.show_layout(layout)

def do_print():
print_op = gtk.PrintOperation()
#print_op.set_property("allow-async", True)

print_op.connect("draw_page", draw_page)

print_op.set_n_pages(1)
res = print_op.run(gtk.PRINT_OPERATION_ACTION_PRINT)

do_print()
1. В GNU/Linux с CUPS не печатает, пока не нажму несколько раз Ctrl+C. А если раскомменитировать строку print_op.set_property(“allow-async”, True) просто выходит ничего не печатая.

2. В венде нормально печатает, но почему-то выдает диалог печати (а не должен, т.к. написано gtk.PRINT_OPERATION_ACTION_PRINT вместо gtk.PRINT_OPERATION_ACTION_PRINT_DIALOG).

Кто-нибудь побеждал хотя бы одну из этих проблем?



Отредактировано (Дек. 4, 2008 23:03:44)

Офлайн

#10 Дек. 5, 2008 12:31:46

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Как распечатать документ

Я вот бьюсь над задачей печати изображений… Вообщем то мне нужен как раз диалог принтера, чтоб установить параметры печати, типа размер бумаги, и главное качество. Это все зависит от драйверов принтера. Может в лоб решить задачу?! Кто нибудь может подсказать как вызвать стандартный виндовый мастер печати, для определенного файла? Никак не могу найти, как это сделать из коммандной строки :(



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version