powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Почему при печати из Delphi и из других программ разная ширина одной и той же фразы
17 сообщений из 17, страница 1 из 1
Почему при печати из Delphi и из других программ разная ширина одной и той же фразы
    #39913995
Dimitry Timokhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, приветствую!

1. Сравнил печать на своём принтере из Delphi, из MS Word и Google Docs.
Везде получается разная фактическая ширина одной той же фразы (измерял линейкой).
В Delphi - 120 мм, в MS Word - 122 мм, в Google Docs - 123 мм.
По идее, такого получаться не должно - думаю, все программы должны печатать одними и теми же вызовами GDI.

2. Написал тривиальный пример:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
   Printer.Orientation := poLandscape;
   Printer.BeginDoc();
   Printer.Canvas.Font.Name := 'Arial';
   Printer.Canvas.Font.Size := 8;
   Printer.Canvas.Font.Style := [fsBold];
   Printer.Canvas.TextOut(100, 100, 'ИНВЕНТАРНАЯ ВЕДОМОСТЬ ОС (ПО ДАННЫМ МОДУЛЯ "ОС1") на конец дня 31.12.2019');
   Printer.EndDoc();


3. Кто разбирается в GDI, объясните, пожалуйста, как такое может получаться?
Может, я не так как-то печатаю?
И где правда - у меня или в других программах?

PS
Мой принтер имеет такие параметры:
HP LaserJet P3005 UPD PCL 6
DPI: pX=300, pY=300
NonPrintable: pL=50, pT=50, pR=50, pB=50
NonPrintable: mmL=4,23, mmT=4,23, mmR=4,23, mmB=4,23
Printable: pW=3407, pH=2380
Printable: mmW=288,24, mmH=201,35
Page: pW=3507, pH=2480
Page: mmW=296,70, mmH=209,81
...
Рейтинг: 0 / 0
Почему при печати из Delphi и из других программ разная ширина одной и той же фразы
    #39913996
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"fsBold" в разных приложения может значить разное.
...
Рейтинг: 0 / 0
Почему при печати из Delphi и из других программ разная ширина одной и той же фразы
    #39914000
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Word может и через DirectX печатать
...
Рейтинг: 0 / 0
Почему при печати из Delphi и из других программ разная ширина одной и той же фразы
    #39914001
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Timokhov,
В тексте можно делать разные интервалы между символами.
...
Рейтинг: 0 / 0
Почему при печати из Delphi и из других программ разная ширина одной и той же фразы
    #39914002
Dimitry Timokhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rgreat,

Без fsBold проверял. Все равно разница.
Проверял и для Times. Тоже есть разница, но не такая большая.
...
Рейтинг: 0 / 0
Почему при печати из Delphi и из других программ разная ширина одной и той же фразы
    #39914003
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Timokhov,

Без Bold тоже тощина линий может быть другая.

Это числовой параметр в API.
...
Рейтинг: 0 / 0
Почему при печати из Delphi и из других программ разная ширина одной и той же фразы
    #39914004
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry TimokhovМожет, я не так как-то печатаю?

Не факт, что ты печатаешь именно то, что печатают другие. У шрифта помимо базовых
характеристик есть ещё куча опций. Плюс выравнивание слов. Плюс сам шрифт может
отличаться, то есть твой Arial и гугловский - это два разных ариала. Сравнивай не общую
ширину, а глифы каждой буквы и расстояния между ними. Бумага попрозрачнее и стол с
подсветкой тебе помогут.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Почему при печати из Delphi и из других программ разная ширина одной и той же фразы
    #39914190
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Timokhov,

раньше в книжках об этом писали, все шрифт приводятся к кратным инчам размерам, с округлением в нижнию сторону
у принтера разрешение куда больше, чем у монитора, это приводит к увеличению размера при печати

у МС была рекомендация, выставлять размер шрифта, пропорционально физическим величинам шрифтов, что собственно Font.Size и делает

но потом появились "маковские шрифты" - и пошёл разброд творчества

Т.е. если вы ходите печать один-в-один, вам либо готовить битмап и печатать его (у акробата например такая опция есть), что затратно по ресурсам и довольно долго (например, если делать это по сети). Ещё "хвалят" GDI+, он собственно так и делает под капотом.
Либо найти\делать свой шрифт, который учтёт вышеописанные рекомендации.

кроме того, у принтера может быть свой набор шрифтов и он подобрал совсем не то, что вы указали - вроде как-то это запрещалось с помощью апи(гуглите)
...
Рейтинг: 0 / 0
Почему при печати из Delphi и из других программ разная ширина одной и той же фразы
    #39914194
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы для начала провел аналогичные эксперименты с PDF-ками, там все встроены все параметры, влияющие на отображение как на экране, так и при печати.
Если будет совпадение - проблема исключительно с недостатком word-формата, т.е. какие-то характеристики отданы на откуп программе-обработчику.
...
Рейтинг: 0 / 0
Почему при печати из Delphi и из других программ разная ширина одной и той же фразы
    #39914197
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
15.01.2020 11:54, Соколинский Борис пишет:
> Я бы для начала провел аналогичные эксперименты с PDF-ками, там все встроены все параметры

а вот не надо такой категоричности.
pdf позволяет задать многие параметры, но отнюдь не обязывает это делать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Почему при печати из Delphi и из других программ разная ширина одной и той же фразы
    #39914203
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
pdf позволяет задать многие параметры, но отнюдь не обязывает это делать.
Резонно.
Значит нужно взять pdf-ник где точно задано все. Acrobat-овский, насколько я помню, "правильный".
...
Рейтинг: 0 / 0
Почему при печати из Delphi и из других программ разная ширина одной и той же фразы
    #39914277
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По моему опыту FastReport (пишу про него, т.к. им пользуюсь) позволяет печатать весьма точно - не раз приходилось проектировать этикетки для изделий (а потом их печатали регулярно, или я сам печатал например разово), в том числе маленькие, где нужно попадать точно, на разных принтерах.
Коллеги то же самое делали из Corel Draw, буквально, какой размер там, такой и на принтере, с точностью до долей миллиметра.
Так что я бы предположил, что отличаются размеры текста, выдаваемые самими программами.
...
Рейтинг: 0 / 0
Почему при печати из Delphi и из других программ разная ширина одной и той же фразы
    #39914281
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62
с точностью до долей миллиметра
наверное :)
...
Рейтинг: 0 / 0
Почему при печати из Delphi и из других программ разная ширина одной и той же фразы
    #39914286
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62,
хотя наверное то, что я написал, очевидно, и тут обсуждали, что именно в прогрмамах дает разницу.
...
Рейтинг: 0 / 0
Почему при печати из Delphi и из других программ разная ширина одной и той же фразы
    #39914289
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
15.01.2020 13:29, s62 пишет:
> Так что я бы предположил, что отличаются размеры текста, выдаваемые самими программами.

+1
программы посложнее палки-верёвки могут оперировать "a logical font with the specified characteristics".
подробности смотреть в мсдн https://docs.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-createfonta

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Почему при печати из Delphi и из других программ разная ширина одной и той же фразы
    #39914402
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0. Нехрена с линейкой лезть!
1. В пособиях по верстке обясняют что в реальности нельзя всё точно расчитать и всегда надо оставлять небольшие зазоры (вот как раз для того чтобы твои +-2мм не влияли на конечный результат)
2. На реальную ширину слова например шрифта Tahoma 12 (не жирный, не курсив) могут влиять (навскидку): режим маппирования DC, задание межсимвольного расстояния, даже значение поля iQuality при его создании, а если данный шрифт не установлен, или в нём нет нужного глифа для символа - то ещё несколько механизмов подстановки шрифта.
...
Рейтинг: 0 / 0
Почему при печати из Delphi и из других программ разная ширина одной и той же фразы
    #39914467
Dimitry Timokhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, благодарю за внимание!

1. Информации много. Еще покопаюсь.
2. Главное, что я понял, что нет у меня неверной работы с печатью. На разницу в поведении влияют многие факторы. Т.е. картина складывается объективная. Можно не париться))
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Почему при печати из Delphi и из других программ разная ширина одной и той же фразы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]