I’m having issues with my SQL Reporting Services reports. I’m using a custom font for report headers, and when deployed to the server it does not render correctly when I print or export to PDF/TIFF. I have installed the font on the server. Is there anything else I need to do in order to use custom fonts?
When viewing the font in the browser it looks correct – since all client computers have the font installed…
Thanks Ryan, your post to the FAQ solved the problem. Installing the fonts on the server fixes the print problem, as well as problems with charts (which are also rendered on the server). Like you point out (as well as being mentioned in the FAQ) Reporting Services 2005 does not do font embedding in PDF files. I guess that is okay for now – the most important part was being able to hit print and get the correct fonts.
The reason the fonts didn’t show up straight away is answered in the FAQ:
Q: I’ve installed the font on my client/server but I still see ?’s or black boxes. Why? A: For the client machine, closing all instances of the PDF viewer then reopening them should fix the issue.
For the server, restarting the services should allow the PDF renderer to pick up the new font information.
Unfortunately, I have also seen times where I needed a full machine reboot to get the client/server to recognize the newly installed font.
The PDF files served up from SSRS, like many PDF files, have embedded postscript fonts. So, the local fonts used in the report are converted to a best matching postscript font when the conversion takes place so the PDF is totally portable without relying on locally installed fonts.
You can see the official MS guidelines and font requirements for SSRS PDF exports here: SQL Server 2005 Books Online (September 2007) Designing for PDF Output. Also, this post should provide some help as well: Reporting Services: PDF Renderer FAQ
Aspose apparently also has a component that claims to be able to add custom embedded fonts in SQL Report PDFs.
See Aspose.Pdf for Reporting Services
I’ve not tried this component, so I can only share what it claims to be able to do.