Форум: "Основная";
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];
ВнизПечать из дельфи документов в 866 кодировке с псевдографикой Найти похожие ветки
← →
Alexxx (2002-01-29 15:19) [0]Проблема в следующем: при печати из Дельфи документов, созданных в 866 кодировке канва принтера, а точнее Printer.Canvas.Font не хочет дружить с OEM_CHARSET.
Перекодировка OEMTOANSI ничего не дает в силу того, что все символы псевдографики (рамки и т.п.) начинают отображаться плюсиками и тому подобными знаками, что не соответствует условиям задачи. Буду признателен за любую помощь, проблема появилась как всегда неожиданно и в самое неудачное время :(
← →
panov (2002-01-29 15:23) [1]используй собственную таблицу перекодировки, в которой псевдографику заменяй на символы, которые тебе нужны...
← →
Alexxx (2002-01-29 15:30) [2]А откуда взять эти символы ?
Для Courier New шрифта, например, эти символы содержатся только в OEM_CHARSET.
← →
panov (2002-01-29 15:32) [3]Можно попробовать шрифт "terminal" использовать, только я не уверен, что любой принтер будет их поддерживать...
← →
Alexxx (2002-01-29 15:36) [4]Терминал не подходит - у него вообще единственный charset - это OEM_CHARSET, к тому же он растровый, а не TT :(((
← →
panov (2002-01-29 15:42) [5]Еще вариант - отрисовывать самому, но задача, конечно, не из тех, что вдохновляют...
← →
Alexxx (2002-01-29 15:43) [6]Вот и я о том же... :(((
Просто есть надежда, что есть способ проще :-)
← →
Alexxx (2002-01-29 16:27) [7]???
← →
Alexxx (2002-01-29 17:19) [8]????
← →
valery_f (2002-01-29 17:58) [9]Сейчас посмотрел - курьер сию псевдографику имеет (символы начиная с $2500), правда в списке кодовых страниц шрифта сие не значится (что характерно :) Чтобы их напечатать прийдется юзать TextOutW с указанием двухбайтового кода символов (unicode). Если что - пиши, кину пример.
← →
Alexxx (2002-01-29 18:06) [10]К слову, опять же - он ее и 866 странице имеет, только это не спасает :(((
← →
Alexxx (2002-01-30 11:57) [11]?
← →
valery_f (2002-01-30 12:42) [12]Я так понял - пример не помог? На чем споткнулся?
← →
Alexxx (2002-01-30 13:09) [13]Попробовать не успел, если честно, но в примере у тебя вывод не на принтер, а как на принтере это будет выглядеть ?
Просто на канве он в любой кодировке нормально печатает, а вот с принтером гемморой начинается :((
← →
valery_f (2002-01-30 14:17) [14]Какая разница - принтер или нет? Canvas - и в Африке Canvas :) Только что отправил на печать бо-о-ольшущий иероглиф - работает:
procedure TForm1.Button1Click(Sender: TObject);
var s: widestring; c: widechar; p: ^word;
begin
Printer.PrinterIndex := 2; //это у меня сетевой принтер
Printer.BeginDoc;
s := " "; p := @c;
p^ := $512F; //код иероглифа
s[1] := c;
Printer.Canvas.Font.Name := "Arial Unicode MS";
Printer.Canvas.Font.Size := 48;
TextOutW(Printer.Canvas.Handle,100,100,PWideChar(s),1);
Printer.EndDoc;
end;
← →
Alexxx (2002-01-30 14:56) [15]Разница есть.
Иначе бы и textOut срабатывал.
Но все равно попробую, спасибо.
← →
valery_f (2002-01-30 15:48) [16]Только не textOut, а TextOutW. TextOut использует активную кодовую страницу и к спец. символам через нее не доберешься. А TextOutW работает с юникодом (двухбайтные символы) и страницы ей пополам - лишь бы указанный символ в шрифте присутствовал.
← →
Alexxx (2002-01-30 16:29) [17]Но для канвы изображения ведь срабатывает.
То есть
Image1.Canvas.Font.Name:="Courier New";
Image1.Canvas.Font.Charset:=OEM_CHARSET;
Image1.Canvas.TextOut(1,1,"Всякая псевдографика");
печатается нормально, а как только Image1 меняем на Printer - все. никаких шрифтов мы не понимаем со всеми вытекающими.
Единственное - твой пример с Unicode получился, но это же тоже тот еще выход... :(((
← →
AlexKniga (2002-01-30 20:21) [18]Принтер шрифт Тerminal понимает?
То есть:
1) Открываем в Word"e текст с псевдографикой как "text only", не "text DOS". {символы с номером > 128 отобразяться не правильно}
2) Выделяем всё. Меняем шрифт Courer на Terminal. {всё выглядит OK} Если в Word"e доступны только TT, делаешь через Excel.
3) Отправляем на печать.
Смотрим результат.
Если он плачевный
то нужен Unicode
иначе печатаем Terminal"ом;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.004 c