Как встроить шрифт в PDF с помощью RDLC
Вопрос
я использую Microsoft.Reporting.WebForms.LocalReport для создания PDF-файла, все работает как шарм, но теперь злой маркетинг хочет использовать собственный шрифт (они используют такие сумасшедшие аргументы, как «фирменный стиль» и все такое).
я уже вытаращил глаза и теперь знаю это
- мне нужен ReportViewer 2008 SP1 или более поздняя версия
- шрифт должен быть помечен как разрешенный для встраивания
- шрифт должен быть TrueType
но это все равно не работает.Я уверен, что RDLC не поддерживает эту функцию. Кто-нибудь знает, так ли это?к сожалению, я не могу использовать отчеты на стороне сервера, потому что мне не хватает сервера отчетов.
Тиа
Решение
Встраивание шрифтов работает с Microsoft Reporting 2010 или более поздней версии, но по-прежнему применяются следующие ограничения.
- Шрифт должен быть помечен как разрешенный для встраивания.
- Шрифт должен быть типа TrueType.
У вас может возникнуть проблема, заключающаяся в том, что ваш шрифт внедряется, но ваш PDF-файл по-прежнему отображает текст в формате Arial.Это случилось со мной после того, как я установил несколько новых шрифтов на Windows Server 2008 R2, перезапуск AppPool (ASP.NET MVC) не решил эту проблему, потребовался перезапуск сервера.
Другие советы
Я провел простой тест с использованием шрифта Arial Narrow в Visual Studio 2008, и он работал нормально.Я протестировал сгенерированный PDF-файл на виртуальной машине XP, на которой нет шрифта, и он отобразился нормально.Возможно, проблема в шрифте?
Хм, возможно, дело в следующем: в своем тесте я использовал Winforms.LocalReport, а не WebForms.Возможно, в этом и есть хитрость?
У меня была та же проблема, но я обнаружил, что шрифт не нужно встраивать.Проблема заключалась в атрибуте Font Face в HTML.Редактор HTML, который мы использовали, сгенерировал тег Font следующим образом:
<font face="Impact,Charcoal,sans-serif" size="6">Impact </font>
Для средства просмотра отчетов это было нормально, но для создания PDF-файла он должен был выглядеть так:
<font face="Impact" size="6">Impact </font>
Поэтому я добавил код для замены значений атрибута до его привязки к отчету:
htmlValue = htmlValue.Replace("Impact,Charcoal,sans-serif", "Impact")
.Replace("Arial,Helvetica,sans-serif", "Arial")
.Replace("Georgia,serif", "Georgia")
.Replace("Verdana,Geneva,sans-serif", "Verdana")
.Replace("'Courier New',Courier,monospace", "Courier New")
.Replace("'Lucida Console',Monaco,monospace", "Lucida Console")
.Replace("Tahoma,Geneva,sans-serif", "Tahoma")
.Replace("'Times New Roman',Times,serif", "Times New Roman")
.Replace("'Trebuchet MS',Helvetica,sans-serif", "Trebuchet MS");
- Шрифт должен быть помечен как разрешенный для встраивания.
- Шрифт должен быть типа TrueType.
- Добавьте свой шрифт в шрифты сервера Windows
Если вы выполнили все вышеперечисленное, а шрифт не отображается в файле RDLC отчета в формате PDF,
Возможно, вам нужно перезагрузить сервер, у меня это работает.