Unplanned
Last Updated: 03 Dec 2025 14:24 by Domenico
Domenico
Created on: 03 Dec 2025 14:24
Category: PdfProcessing
Type: Bug Report
0
SpreadProcessing: PdfFormatProvider: corrupted PDF file after changing the font to Helvetica

This is the code for reproducing the incorrect PDF document. If the step with changing the font is commented, the document is exported properly:

 //Step 1: Create an instance of XlsxFormatProvider to import the Excel file
            XlsxFormatProvider xlsxFormatProvider = new XlsxFormatProvider();
            Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf.PdfFormatProvider pdfFormatProvider = new Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf.PdfFormatProvider();

            Workbook workbook;
            using (FileStream input = new FileStream("Input.xlsx", FileMode.Open))
            {
                workbook = xlsxFormatProvider.Import(input, TimeSpan.FromSeconds(10));
            }

            //Step 2: Export the workbook to PDF RadFixedDocument to modify fonts
            Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf.PdfFormatProvider spread_pdf_provider = new Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf.PdfFormatProvider();
            RadFixedDocument fixedDocument = spread_pdf_provider.ExportToFixedDocument(workbook, TimeSpan.FromSeconds(10));

            foreach (var page in fixedDocument.Pages)
            {
                foreach (var content in page.Content)
                {
                    if (content is TextFragment text)
                    {
                        // Replace the font with Helvetica or HelveticaBold based on the original font style
                        text.Font = text.Font.Name.ToLower().Contains("bold")
                            ? FontsRepository.HelveticaBold
                            : FontsRepository.Helvetica;
                    }
                }
            }

            //Step 3: Save the modified RadFixedDocument back to PDF
            string outputFileName = "ExportedWorkbook.pdf";
            Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.PdfFormatProvider fixed_pdf_provider = new Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.PdfFormatProvider();
            using (FileStream output = new FileStream(outputFileName, FileMode.Create))
            {
                fixed_pdf_provider.ExportSettings.DocumentUnhandledException += ExportSettings_DocumentUnhandledException;
                fixed_pdf_provider.ExportSettings.FontEmbeddingType = Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Export.FontEmbeddingType.Subset;
                fixed_pdf_provider.Export(fixedDocument, output, TimeSpan.FromSeconds(10));
            }
            Process.Start(new ProcessStartInfo() { FileName = outputFileName, UseShellExecute = true });

0 comments