Найти - Пользователи
Полная версия: Как распечатать документ
Начало » Python для экспертов » Как распечатать документ
1 2 3 4
sbar
igor.kaist
Не со всеми принтерами
Действительно, с моим физическим принтером (canon pixma ip1500, струйник) не сработало (появляется в очереди файл и тут же исчезает), только с pdf-принтером.
Есть ли свободный или хотя бы бесплатный (не shareware) аналог Foxit Reader (или что-то аналогичное, важна только печать из консоли postscript, pdf или хотя бы картинки (любой: векторной, растровой))?
На счет win32print — возможно ли его заставить работать в Python 2.5?
igor.kaist
sbar
На счет win32print — возможно ли его заставить работать в Python 2.5?
он работает!!! Я сам проверял лично! В 4 посте я описывал варианты, которые испробывал лично.
В pywin32 есть даже рабочие примеры. Из одного из них (распечатка скриншота экрана), ты сможешь соорудить свой пример. Можно в PIL формировать документ вообще и выводить его на печать как картинку :)
Я сам сейчас бьюсь над одной задачей… Как мне печатать изображения с настройками какие позволяет принтер, то есть грубо говоря вывести не документ а фото 10х15 в фото режиме
sbar
Ага. Видимо проект раньше назывался win32all, я сначала скачал его и для 2.5 его не оказалось.
Но все равно для моего принтера не срабатывает. :( Получается та же ерунда, что и с командой print: на короткое время появляется в очереди файл и исчезает (по крайней мере венда так считает, до принтера вряд ли что-то доходит, ибо он должен мигнуть лампочкой при принятии инфы).
igor.kaist
То что там в примерах это не постскрипт! убедись что у тебя твой принтер стоит в системе как принтер по умолчанию. Когда смотришь на вывод примера в консоль, посмотри название принтера, оно должно промелькнуть. Я и с лазерником пробовал и со струйником, все было пучком. Там используется вин апи, для отправки битмапа на печать а не постскрипт. С постскриптом у меня тоже не вышло
shiza
sbar
Есть ли свободный или хотя бы бесплатный (не shareware) аналог Foxit Reader (или что-то аналогичное, важна только печать из консоли postscript, pdf или хотя бы картинки (любой: векторной, растровой))?
Есть Sumatra PDF. Из консоли печатает.
http://blog.kowalczyk.info/software/sumatrapdf/index.html
sbar
igor.kaist, PIL+win32print работает, спасибо (рабочий пример тут брал).

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

shiza
Есть Sumatra PDF. Из консоли печатает.
Попробовал распечатать им из консоли: выдалось окно с pdf и повисло. Памяти съело 100 Mb. Ничего не распечаталось.
Впрочем это не совсем то: есть ли такая софтина, которая просто молча распечатает (не выводя никаких окон и никаких сообщений)? Просто распечатает и в случае неудачи вернет exitcode != 0?
igor.kaist
С PIL и win32 все нормально на всех имеющихся у меня принтерах (на 4 запускал), так как это не постскрипт а Вин апи.
Вообще, извращенство, но в PIL можно и документ срендерить.. В большинстве случаев, много ли нужно: текст разными шрифтами, да таблицы
sbar
А может кто-нибудь привести простой пример печати через pycups? А то документации по нему я что-то совсем не нахожу, и в help(cups) не нашел как распечатать.

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

cups.setUser("root")
cups.setServer("localhost")
c = cups.Connection()
c.printFile("/usr/share/pixmaps/inkscape.png", c.getDefault(), "", {})
sbar
Что-то здесь никто ничего не сказал про 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).

Кто-нибудь побеждал хотя бы одну из этих проблем?
igor.kaist
Я вот бьюсь над задачей печати изображений… Вообщем то мне нужен как раз диалог принтера, чтоб установить параметры печати, типа размер бумаги, и главное качество. Это все зависит от драйверов принтера. Может в лоб решить задачу?! Кто нибудь может подсказать как вызвать стандартный виндовый мастер печати, для определенного файла? Никак не могу найти, как это сделать из коммандной строки :(
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB