-
Дело в том, что для Windows все принтеры - страничные. А у меня стоит задача обеспечить печать 10 метровых непрерывных(без разрывов) графиков.
из под доса, на старом программном обеспечении, на матричных эпсонах - все печатется прекрасно. и пользователю не обьяснишь что в Windows XP ВСЕ ПРИНТЕРЫ - страничные.
и даже если создашь свой формат бумаги в диспетчере печати - тот же эпсон этот типоразмер бумаги не увидит т.к. он превышает зашитые в фирменном драйвере ограничения на длинну листа.
может уже кто бодался с этой проблемой?
-
Попробуйте напрямую посылать команды принтеру, те же что из под доса слали. примерно так : procedure WriteRawStringToPrinter(PrinterName,Title:String; S:String);
var
Handle : THandle;
N : DWORD;
begin
Handle:=PrepareWriteToPrinter(PrinterName,Title);
if Handle<>0 then
begin
while Length(s)>0 do
begin
if Length(s)>200 then
begin
WritePrinter(Handle, PChar(Copy(S,1,200)), 200, N);
Delete(s,1,200);
end
else
begin
WritePrinter(Handle, PChar(S), Length(S), N);
s:='';
end;
end;
FinishWriteToPrinter(Handle);
end;
end; PCL таким образом вполне себе отправлялся. Написано чуть кривовато, но коли будет нужда, думаю исправите.
-
Спасибо попробую!
маленькое дополнение. считаем что LPT порт ушел в небытие вместе с досом:-) и это факт кстати. ноутбуков у нас с ЛПТ уже не найти новых:-)
и еще как этим методом отправить на печать битмап?
-
У Эпсона нет ограничение, если специально не включать деление на листы и пропуск для обрезки.
В Виндоус все принтеры также рулонные, а деление на страницы это функции спуллера, так что если печатать мимо спуллера, то и страниц не будет.
-
> vaz_mz © (07.01.11 11:08) [2]
Совсем ни к чему печатать в порт, достаточно печатать на физическое устройства, как файл.
-
> У Эпсона нет ограничение, если специально не включать деление > на листы и пропуск для обрезки.
1. каким образом я это ключаю? 2. ИМХО - нет, я ходил с этим на фирменный сайт эпсона. там четко написано если размеры больше зашитых в ДРАЙВЕРЕ - то принтерс ними работать не будет.
если Вас незатруднит, приведите пример: каким образом печатать мимо спулера, используя стандартный класс Tprinter?
причем чтобы печатать на любых принтерах, а не на каком то одном определенном?
-
> vaz_mz (07.01.2011 11:18:05) [5]
Печатай в текстовый файл.
-
> Печатай в текстовый файл.
битмап? на любой принтер?
-
> vaz_mz (07.01.2011 12:21:07) [7]
Для печати битмапов нужно знать систему команд. Только вот откуда вдруг взялся битмап, на седьмом шаге обсуждения. Тогда будь добр огласи весь список.
-
Хотя если умели печатать из под доса, то в чем проблема из под Виндоус, посылайте теже команды в принтер.
-
Удалено модератором Примечание: Обсуждение модерирования
-
повторюсь раз затерли:
> Для печати битмапов нужно знать систему команд. > Только вот откуда вдруг взялся битмап, на седьмом шаге обсуждения. > > Тогда будь добр огласи весь список.
_изначально_ и вопрос был задан про возможность непрерывной печати графиков работая через стандартные средства доступные в windows xp.
> Хотя если умели печатать из под доса, то в чем проблема > из под Виндоус, посылайте теже команды в принтер.
1. отсутсвуют исходники. 2. там реализована печать только на матричные эпсоны подключенные к ЛПТ. а это частный случай. мне нужно решение работающее на любом принтере который подключен с помощью драйверов производителя к компьютеру под управлением Windows XP.
сформулирую задачу по другому мож так понятней: проблема в том что нужно обеспечить приложению возможность рулонной, непрерывной печати графиков на любом принтере подключенному к Windows XP.
-
Удалено модератором Примечание: Обсуждение модерирования
|