I am currently experiencing an I/O exception when trying to export the RadDocument to a byte array using the Telerik.Windows.Documents.FormatProviders.Pdf.PdfFormatProvider.
Here is a code snippet of how am I using the Provider:
PdfFormatProvider pdfProvider = new PdfFormatProvider();
_printReportByteArray = pdfProvider.Export(_printReportDocument);
using (var memoryStream = new MemoryStream(_printReportByteArray))
{
this.PrintReportViewer.DocumentSource = new PdfDocumentSource(memoryStream);
}
The exception occurs at
pdfProvider.Export(_printReportDocument)
It appears that the provider is trying to load the font file from the Windows directory, but for some reason this particular file is causing the exception randomly on certain machines (not on all machines). I would like to know if there is a way to resolve this issue. Like loading the font file into the memory instead of relying on the Windows directory.
Note: the font file does exist at the provided path location, and is not missing.
Here is the full exception message:
System.IO.IOException: I/O error occurred while opening the file "C:\WINDOWS\FONTS\MSYH.TTC". at MS.Internal.FontCache.FileMapping.OpenFile(String fileName) at MS.Internal.FontCache.FontSource.GetUnmanagedStream() at System.Windows.Media.GlyphTypeface.ComputeSubset(ICollection`1 glyphs) at Telerik.Windows.Documents.FormatProviders.Pdf.Fonts.GlyphMappings.ComputeSubset(PdfFontKey key, ICollection`1 glyphs) at Telerik.Windows.Documents.FormatProviders.Pdf.RadPdf.PdfFontFile2.CreateFileFontFile() at Telerik.Windows.Documents.FormatProviders.Pdf.RadPdf.PdfFontFile2.WriteContents(PdfWriter writer) at Telerik.Windows.Documents.FormatProviders.Pdf.RadPdf.PdfStream.WriteToCore(PdfWriter writer) at Telerik.Windows.Documents.FormatProviders.Pdf.RadPdf.PdfObject.WriteTo(PdfWriter writer) at Telerik.Windows.Documents.FormatProviders.Pdf.RadPdf.PdfWriter.WritePdfObject(PdfObject obj) at Telerik.Windows.Documents.FormatProviders.Pdf.PdfDocumentExporter.Export() at Telerik.Windows.Documents.FormatProviders.Pdf.PdfFormatProvider.Export(RadDocument document, Stream output) at Telerik.Windows.Documents.FormatProviders.DocumentFormatProviderBase.Export(RadDocument document) at Cairful.Desktop.Module.Care.NursingReports.NursingReports.Dialogs.PrintReportsDialogVM.PrintReportDocument() at Cairful.Desktop.Module.Care.NursingReports.NursingReports.Dialogs.PrintReportsDialog.PrintReportsDialog_OnLoaded(Object sender, RoutedEventArgs e) at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) at System.Windows.UIElement.RaiseEvent(RoutedEventArgs e) at System.Windows.BroadcastEventHelper.BroadcastEvent(DependencyObject root, RoutedEvent routedEvent) at System.Windows.BroadcastEventHelper.BroadcastLoadedEvent(Object root) at MS.Internal.LoadedOrUnloadedOperation.DoWork() at System.Windows.Media.MediaContext.FireLoadedPendingCallbacks() at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks() at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget) at System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)