Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-42754
Quest
2002-01-30 12:05
2002.02.14
Обновление программы, вызываемое из неё самой ...


3-42700
Rev
2002-01-22 14:45
2002.02.14
Вопрос по IB - помогите.............


3-42670
Mikhail
2002-01-18 21:42
2002.02.14
Ответте хоть ради смеха...


3-42701
Yakudza
2002-01-22 21:39
2002.02.14
Подскажите, очень срочно надо !!


1-42740
Dmitriy_R
2002-01-30 13:18
2002.02.14
Создание лог файлов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский