Completed
Last Updated: 17 May 2024 14:37 by ADMIN
Release 2024.2.426 (2024 Q2)

This is the code used for merging:

        private  void MergeDifferentDocumentsPagesWithFixed()
        {
            string[] documentsToMerge =
            {
                "14301-STOCK_Proforma.pdf",
                "14302-STOCK_Proforma.pdf",
                "14303-STOCK_Proforma.pdf",
                "14304-STOCK_Proforma.pdf",
                "14305-STOCK_Proforma.pdf",
                "14330-STOCK_Proforma.pdf"
            };
            RadFixedDocument doc = new RadFixedDocument();
            PdfFormatProvider provider = new PdfFormatProvider();
            foreach (string current_item in documentsToMerge)
            {
                string path = @"..\..\Samples\" + current_item;
                RadFixedDocument docToMerge;
                if (!File.Exists(path))
                {
                    continue;
                }
                using (Stream stream = File.OpenRead(path))
                {
                    docToMerge = provider.Import(stream);
                }
                doc.Merge(docToMerge);
            }


            string outputFilePath = @"..\..\mergedFixed.pdf";
            File.Delete(outputFilePath);

            using (Stream output = File.OpenWrite(outputFilePath))
            {
                provider.Export(doc, output);
            }
            Process.Start(new ProcessStartInfo() { FileName = outputFilePath, UseShellExecute = true });


        }

Workaround:  

   private void MergeDifferentDocumentsPages(string resultFileName)
   {
       string[] documentsToMerge =
       {
           "14301-STOCK_Proforma.pdf",
           "14302-STOCK_Proforma.pdf",
           "14303-STOCK_Proforma.pdf",
           "14304-STOCK_Proforma.pdf",
           "14305-STOCK_Proforma.pdf",
           "14330-STOCK_Proforma.pdf"
       };

       File.Delete(resultFileName);
       using (PdfStreamWriter fileWriter = new PdfStreamWriter(File.OpenWrite(resultFileName)))
       {
           foreach (string documentName in documentsToMerge)
           {
               string path = @"..\..\Samples\" + documentName;
               using (PdfFileSource fileToMerge = new PdfFileSource(File.OpenRead(path)))
               {
                   foreach (PdfPageSource pageToMerge in fileToMerge.Pages)
                   {
                       fileWriter.WritePage(pageToMerge);
                   }
               }
           }
       }


      
       Process.Start(new ProcessStartInfo() { FileName = resultFileName, UseShellExecute = true });
   }

Completed
Last Updated: 15 May 2024 06:28 by ADMIN
Release 2024.2.426 (2024 Q2)
When merging documents with exactly the same font but different character widths, some characters are rendered with the wrong width.

Completed
Last Updated: 13 Nov 2024 09:20 by ADMIN
Release 2024.4.1106 (Q4 2024)
Expose a DocumentUnhandledException PdfExportSetting when converting a RadFlowFlow to a RadFixedDocument document.
Unplanned
Last Updated: 13 May 2024 07:15 by Frank

PdfProcessing: Handle merge of documents containing fields with the same invalid name.

Completed
Last Updated: 02 Aug 2024 11:09 by ADMIN
Release 2024.3.802 (2024 Q3)
Broken page content when exporting a document and inversing a non-invertible concat matrix.
Unplanned
Last Updated: 03 Jun 2024 13:05 by Lorrie
Currently, the SkiaImageFormatProvider considers the RadFixedPage.Size when creating the image. If the RadFixedPage.CropBox is specified, the developer can control what rectangle of the page to be displayed/printed. However, it is not considered when exporting to an image. Improving the SkiaImageFormatProvider to respect the CropBox as well will give the opportunity to crop just a certain region of the PDF page and save it as an image.
Unplanned
Last Updated: 04 Jun 2024 10:34 by Kishan
Improve performance of Block.Measure for large chunks of text.
Declined
Last Updated: 19 Jun 2024 07:57 by ADMIN
Created by: Arquimedes
Comments: 5
Category: PdfProcessing
Type: Bug Report
0

When an import of the attached PDF file is executed, the result is a file with vertically rotated images, as well as enlarged and distorted. This is part of the code executed in the final application. Do you have any idea why this is happening? Is there any suggested solution?

As a result of the imported file, other processes are executed, such as creating bookmarks and page numbering, but the result is incorrect when presenting the rotated images.

Please find attached a code snippet and the input and generated output file.

Thank you.

 

        private static void TestPDF()
        {
            RadFixedDocument document;
            Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.PdfFormatProvider providerPdf = new();


            using (Stream stream = System.IO.File.OpenRead("C:\\TMP\\Ejemplo1-Input.pdf"))
            {
                document = providerPdf.Import(stream);
                byte[] output = providerPdf.Export(document);

                System.IO.File.WriteAllBytes("C:\\TMP\\Ejemplo1-Output.pdf", output);
            }
        }
Unplanned
Last Updated: 24 Jun 2024 08:45 by Graham
Created by: Graham
Comments: 0
Category: PdfProcessing
Type: Bug Report
0

As a result of the below missing operator, some of the glyphs can't be extracted from the CFFFontTable and the characters are not displayed in the PdfViewer:

The end user result is missing letter from the PDF content.

Unplanned
Last Updated: 30 Jul 2024 06:22 by Rodney

Search for specific text in a PDF document  and you will notice that if the document is landscape, the SearchResult.GetWordBoundingRect method may return incorrect results. If the document is Portrait, the exact results are highlighted with the code snippet below: 

            PdfFormatProvider provider = new PdfFormatProvider();
            RadFixedDocument document = provider.Import(File.ReadAllBytes("Landscape.pdf"));

                TextSearch searchText = new TextSearch(document);
                TextSearchOptions searchOptions = new TextSearchOptions { UseRegularExpression=false, CaseSensitive=false, WholeWordsOnly = true };
                IEnumerable<SearchResult> matchResults = searchText.FindAll("sed", searchOptions);
                foreach (SearchResult resultItem in matchResults)
                {
                    Rect rect = resultItem.GetWordBoundingRect();

                   
                    RadFixedPage page = resultItem.GetResultPage();
                    FixedContentEditor editor = new FixedContentEditor(page);
                 
                    editor.GraphicProperties.FillColor = new RgbColor(125, 255, 0, 0);
                    editor.DrawRectangle(rect);
                }
            
            string outputFilePath = "result.pdf";
            File.Delete(outputFilePath);
            File.WriteAllBytes(outputFilePath, provider.Export(document));
            Process.Start(new ProcessStartInfo() { FileName = outputFilePath, UseShellExecute = true });

Landscape: wrong rectangles are highlighted

Portrait: correct rectangles are highlighted:

 

Completed
Last Updated: 07 Aug 2024 15:19 by ADMIN
Release 2024.3.806 (2024 Q3)

When Cyrillic culture is set an InvalidCastException is thrown.

Workaround: use English culture during the import process

            System.Globalization.CultureInfo currentCulture = System.Threading.Thread.CurrentThread.CurrentCulture;
            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-EN");
            PdfFormatProvider provider = new PdfFormatProvider();
            RadFixedDocument document;
            using (Stream stream = File.OpenRead("popup_dedetizacao_ok.pdf"))
            {
                document = provider.Import(stream);
            }
            System.Threading.Thread.CurrentThread.CurrentCulture = currentCulture;
        

For the RadPdfViewer control you can use a similar approach: 

            System.Globalization.CultureInfo currentCulture = System.Threading.Thread.CurrentThread.CurrentCulture;
            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-EN");
            PdfFormatProvider provider = new PdfFormatProvider();
            RadFixedDocument document;
            using (Stream stream = File.OpenRead("popup_dedetizacao_ok.pdf"))
            {
                document = provider.Import(stream);
            }
            System.Threading.Thread.CurrentThread.CurrentCulture = currentCulture;

            RadForm form = new RadForm();
            RadPdfViewer radPdfViewer1 = new RadPdfViewer();
            form.Controls.Add(radPdfViewer1);
            radPdfViewer1.LoadElementTree();
            radPdfViewer1.Dock = System.Windows.Forms.DockStyle.Fill;
            radPdfViewer1.Document = document;
             
            form.ShowDialog();

 

Completed
Last Updated: 13 Nov 2024 08:51 by ADMIN
Release 2024.4.1106 (Q4 2024)
ArgumentNullException is thrown when resolving DecodeParms collection in Image XObject.
Completed
Last Updated: 12 Feb 2025 15:21 by ADMIN
Release 2025.1.205 (2025 Q1)
In Development
Last Updated: 13 Dec 2024 14:33 by ADMIN
When a Form with AlphaConstant and/or StrokeConstant contains a Path, alpha is applied to Form and Path, leading to a wrong transparency.
Completed
Last Updated: 12 Feb 2025 15:20 by ADMIN
Release 2025.1.205 (2025 Q1)
NullReferenceException is thrown when importing a file with explicitly set UserInterfaceName annotation property to null.
Completed
Last Updated: 12 Feb 2025 15:21 by ADMIN
Release 2025.1.205 (2025 Q1)

An ArgumentNullException is thrown when importing a document with a missing required MediaBox operator in the Page object ("ArgumentNullException: 'Value cannot be null.")

Unplanned
Last Updated: 08 Jan 2025 11:40 by Ken

Add support for actions with invalid Subtype casing.

Example: The action Subtype being "Javascript" instead of the expected "JavaScript".

Unplanned
Last Updated: 14 Jan 2025 13:37 by ADMIN
As a result, the glyphs are not measured and arranged properly. The issue applies to TrueType and Type1 fonts.
Unplanned
Last Updated: 14 Jan 2025 13:48 by ADMIN
Created by: Desislava
Comments: 0
Category: PdfProcessing
Type: Bug Report
0
It seems there is an issue when transforming the position of the original glyph data
Under Review
Last Updated: 10 Feb 2025 14:43 by ADMIN

As Ghiath reported in the forum thread, I am seeing this same error.

I am using RadFixedDocument and am generating a PdfFormatProvider. As Ghiath mentioned it will work fine (weeks, months) and then it seems the the font file is locked and it cannot export.

System.IO.IOException: I/O error when opening file 'C:\WINDOWS\FONTS\MSYH.TTC'.

System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.IO.IOException: I/O error when opening 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.Fixed.Model.Fonts.CidType2Font.ComputeSubset(IEnumerable`1 usedCharacters)
   at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.Fonts.FontStream.CopyPropertiesFromOverride(IPdfExportContext context, FontBase font)
   at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.Fonts.FontStream.CopyPropertiesFrom(IPdfExportContext context, FontBase font)
   at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.Fonts.FontDescriptor.CreateFontFile(IPdfExportContext context, FontBase font)
   at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.Fonts.FontDescriptor.ExportFontFile(IPdfExportContext context, FontBase font)
   at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.Fonts.FontDescriptor.CopyPropertiesFrom(IPdfExportContext context, FontBase font)
   at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.Fonts.CidFontObject.CopyPropertiesFromOverride(IPdfExportContext context, FontBase font)
   at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.Fonts.CidFontObject.CopyPropertiesFrom(IPdfExportContext context, FontBase font)
   at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.Fonts.Type0FontObject.CopyPropertiesFromOverride(IPdfExportContext context, FontBase font)
   at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Export.PdfExporter.WriteFontsFromContext(PdfWriter writer, IPdfExportContext context)
   at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Export.PdfExporter.Export(IRadFixedDocumentExportContext context, Stream output)
   at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.PdfFormatProvider.ExportOverride(RadFixedDocument document, Stream output)
   at Telerik.Windows.Documents.Common.FormatProviders.FormatProviderBase`1.Export(T document, Stream output)
 

It will throw the exception on the line where it is doing the export. The document is typically a multi-page document with images, etc. As I mentioned it might work fine for weeks and then once it fails the only solution is to recycle the web service.