我有一个通过Webforms.LocalReport创建的RDLC报告,该报告使用了我在开发机器上安装的一些自定义字体。这很好用,并将字体嵌入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
提前致谢!
答案 0 :(得分:0)
首先确保您使用的字体允许嵌入。 在您的情况下,您可以从文件&gt;属性&gt;字体选项卡中的开发机器生成的PDF文件中进行验证。字体嵌入权限由字体作者授予。已安装的字体包含一个属性,该属性指示字体作者是否允许在文档中嵌入字体。如果属性值为EMBED_NOEMBEDDING,则该字体不会嵌入PDF文件中。有关详细信息,请参阅msdn.microsoft.com上的“TTGetEmbeddingType”。
其次要确保您的网络托管服务器上安装了该字体。
如果是这样,那么报表查看器PDF解析器会自动将字体嵌入到生成的每个PDF中,并且不需要将字体分发给每个用户。