Форум: "Основная";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
ВнизПроблемы с Printer.PageWidth/PageHeight Найти похожие ветки
← →
Andy BitOff © (2005-12-15 18:18) [0]В справке написано, что свойства возвращают ширину/высоту страницы в пикселях и даже пример использования.
begin
with Printer do
begin
BeginDoc;
Canvas.TextRect(Rect(200,200,PageWidth-200,PageHeight-200), 200, 200, Memo1.Lines.Text);
EndDoc;
end;
end;
Так вот, мой принтер (LJ 4200) возвращает значения 4 и 6 с чем-то тысяч на А4. При этом, если я вывожу картинку на канвас размером во весь лист, то печатается чуть меньше чем четверть изображения, но она занимает весь лист (бумажный). А если использовать пример из справки с большим текстом, то на листе видна одна строка (начало текста).
Поясните мне пожалуйста.
← →
Andy BitOff © (2005-12-15 21:37) [1][робко] Никто не знает или я не понятно описал проблему.
← →
Джо © (2005-12-15 21:39) [2]А что пояснить? Да, они возвращают ширину/высоту страницы в пикселях.
← →
Andy BitOff © (2005-12-15 21:52) [3]Ну а почему тогда они не соответствуют действительности? Что это глюк принтера?
← →
Prohodil Mimo © (2005-12-15 22:25) [4]подозреваю что это для определённого DPI. попробуй при печати другой DPI выбери.
посмотри заодно вот это: http://www.delphiarea.com/products/preview/
← →
GuAV © (2005-12-16 00:31) [5]
> если я вывожу картинку на канвас размером во весь
> лист, то печатается чуть меньше чем четверть
> изображения, но она занимает весь лист (бумажный).
Это не понял.
← →
GuAV © (2005-12-16 00:39) [6]Может, ошибка в коде ?
Мой пример попробуй
http://www.kladovka.net.ru/index.cgi?pid=list&rid=261
← →
Andy BitOff © (2005-12-16 19:12) [7]Блин, вчера так не вовремя кончилось время =( Но сегодня я опять в строю =)
Такое ощущение, что никто не работал с TPrint напрямую, а все пользуются компонентами.
Prohodil Mimo © (15.12.05 22:25) [4]
Этот компонент я давно использую, спасибо. Но для данной задачи он не подходит.
GuAV © (16.12.05 00:39) [6]
Ваш код посмотрел, но поскольку уже решил эту задачу, смотрел поверхностно ;)
А решилось так, и как подозревал Prohodil Mimo, в деле оказался замешан DPI. Попробовать была возможность на двух принтерах (LJ1100 и LJ4200) и на Acrobat PDFWriter. Вот решение:
pw:=Printer.PageWidth div (GetDeviceCaps(Printer.Handle, LogPixelsX) div 100);
ph:=Printer.PageHeight div (GetDeviceCaps(Printer.Handle, LogPixelsY) div 100);
Подсмотрено в реализации TPrint.
← →
Джо © (2005-12-16 19:25) [8]
> [7] Andy BitOff © (16.12.05 19:12)
И что за значения ты таким образом получил?
← →
Andy BitOff © (2005-12-16 19:44) [9]Джо © (16.12.05 19:25) [8]
Всмысле? Какие цифры или что значит pw/ph?
При изменении приведенного в первом посте кода в соответствии с рассказанным мной, то как не странно он работает правильно, а в первой редакции не правильно.
begin
with Printer do
begin
BeginDoc;
Canvas.TextRect(Rect(200,200,pw-200,ph-200), 200, 200, Memo1.Lines.Text);
EndDoc;
end;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c