Как встроить шрифт в решение для использования в PDF с RDLC
У меня есть отчет RDLC, созданный с помощью Webforms.LocalReport, в котором используются несколько пользовательских шрифтов, которые я установил на своем компьютере разработчика. Это хорошо работает и встраивает шрифты в PDF, так что другим не нужен установленный шрифт для просмотра.
Моя проблема заключается в том, что при развертывании в нашей производственной среде существует несколько машин, которые могут запускать отчет. Я не хочу устанавливать шрифт на каждую "потенциальную" машину - есть ли способ присоединить файл шрифта (.TTF) к решению (VB.NET) и получить шрифт отсюда, а не с локальной машины?
Надеюсь, что это имеет смысл!
Если это поможет, ниже приведен пример кода, который я использую
Dim PDFfile As FileInfo
Dim deviceInfo As String = String.Empty
Dim PDF() As Byte
Dim reportParams As List(Of ReportParameter)
Using report As New LocalReport
' Set up report
' Report device information to create PDF with A4 sized pages
deviceInfo = "<DeviceInfo>" & _
" <OutputFormat>EMF</OutputFormat>" & _
" <Orientation>Portrait</Orientation>" & _
" <PageWidth>21cm</PageWidth>" & _
" <PageHeight>29.7cm</PageHeight>" & _
" <MarginTop>0cm</MarginTop>" & _
" <MarginLeft>0cm</MarginLeft>" & _
" <MarginRight>0cm</MarginRight>" & _
" <MarginBottom>0cm</MarginBottom>" & _
"</DeviceInfo>"
With report
.DisplayName = "Display Name"
report.ReportEmbeddedResource = "ReportName.rdlc"
' Add all necessary parameters
reportParams = New List(Of ReportParameter)
reportParams.Add(...)
.SetParameters(reportParams)
End With
PDF = report.Render("PDF", deviceInfo)
PDFfile = New FileInfo("C:\")
Using stream As FileStream = PDFfile.Create
stream.Write(PDF, 0, PDF.Length)
End Using
End Using
Заранее спасибо!
1 ответ
Прежде всего убедитесь, что шрифт, который вы используете, позволяет встраивать. В вашем случае вы можете проверить это из файла PDF, сгенерированного вашим устройством разработчика, на вкладке "Файл"> "Свойства"> "Шрифты". Права на встраивание шрифта предоставляются автором шрифта. Установленные шрифты включают свойство, указывающее, намерен ли автор шрифта встраивать шрифт в документ. Если значением свойства является EMBED_NOEMBEDDING, шрифт не внедряется в файл PDF. Для получения дополнительной информации см. "TTGetEmbeddingType" на msdn.microsoft.com.
Во-вторых, убедитесь, что шрифт установлен на вашем сервере веб-хостинга.
Если это так, то анализатор PDF средства просмотра отчетов автоматически встраивает шрифт в каждый созданный PDF-файл, и нет необходимости распространять этот шрифт каждому пользователю.