горизонтально сжимать текст в CrystalReports - PullRequest
0 голосов
/ 10 октября 2018

У меня следующая проблема.Я воссоздаю метку размера A3 в CrystalReports , и есть текстовое поле, которое должно быть Arial 115, полужирным, 0,5 обычной ширины.

Это можно сделать в HTML с помощьюиспользуя transform:scaleX(0.5).

<p style="font-family: 'Arial'; font-weight:bold; font-size: 115px;transform:scaleX(0.5);">SOME LONGER TEXT (scaled down)</p>

<p style="font-family: 'Arial'; font-weight:bold; font-size: 115px;">SOME LONGER TEXT (no scaling)</p>

И хотя CrystalReports немного понимает HTML, он не поддерживает transform s.

Поэтому я спрашиваю, есть липуть.Этот отчет является частью .net-программы, может быть, для этого есть какая-нибудь API-функция?

Я думал о создании и установке нужных мне шрифтов (их будет 6), но яне могу узнать как.

ОБНОВЛЕНИЕ Я разместил свое решение ниже.

Ответы [ 3 ]

0 голосов
/ 12 октября 2018

Вы можете использовать UFL (библиотеку пользовательских функций), чтобы вычислить наибольший размер шрифта, который бы соответствовал тексту в пределах данной области границы.Создайте свой собственный или посмотрите список сторонних UFL здесь .

Вот описание функции GetFontSizeToFitText () в моем UFL.

0 голосов
/ 12 октября 2018

Что я закончил делать:

  1. получить файл шрифта (в моем случае: C: \ Windows \ Fonts \ arialbd.ttf);
  2. открыть его в FontForge («About» говорит, что это версия от 31.07.2017);
  3. изменить его имя (Элемент - Информация о шрифте - PS Names).Я закончил со шрифтом: ArialShrunk-050-BoldMT, Фамилия: Arial Shrunk 050, Имя для людей: Arial Shrunk 050 Bold;когда вас спросят об изменении уникального идентификатора, нажмите «Изменить»;
  4. измените или удалите переведенные имена шрифтов (Элемент - Информация о шрифте - Имена TTF), иначе он не будет установлен (так как Windows по какой-то причине проверяет локализованные имена шрифтов)).Я удалил все строки, которые не были "английскими (США)".
  5. сохранить как .sfd;
  6. Правка - Выбрать - Символы, которые стоит выводить;
  7. Элемент - Преобразования -Transform;
  8. set Origin to Glyph Origin;первое действие до Scale, X до 50 (оставить Y в 100); Преобразование всех слоев , Слишком высокий уровень направляющего слоя , Округление до Int не проверено; Преобразование ширины слишком , Преобразование классов кернинга тоже , Преобразование простых функций позиционирования и пар керн проверено;set up FontForge
  9. нажмите OK и немного подождите;
  10. Файл - Генерация шрифтов, убедитесь, что выбран TrueType, снимите флажок Validate Before Saving (сохраняет щелчок);нажмите Создать , нажмите OK в окне «Поиск потенциально слишком большой»;
  11. Найдите недавно созданный файл ArialShrunk-050-BoldMT.ttf, дважды щелкнитенажмите Install , чтобы установить шрифт.

Теперь есть новый системный шрифт Arial Shrunk 050, который я могу использовать везде, особенно в CrystalReports.

Это не совсем идеально, но так как мне не нужно генерировать слишком много вариаций масштабирования, оно работает.

0 голосов
/ 12 октября 2018

Я бы предложил использовать HTML в качестве посредника, я не проверял это, поскольку он немного сложен, поэтому для работы может потребоваться некоторая отладка.

Сначала добавьте значение cssClass к текстовому объекту вКристаллический документ (в свойствах).Что-то вроде shrinkobject.

Затем экспортируйте отчет Crystal в HTML-текст.

Затем вставьте HTML-текст с тегом стиля вроде:

html = html.Replace("<HTML>", "<HTML><style>p.shrinkObject {transform:scaleX(0.5);}</style>");

Этот HTML должензатем примените значение CSS и можете отобразить его на принтере.

...