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)
Completed
Last Updated: 26 Jan 2026 14:45 by ADMIN
Release 2024.4.1106 Q4 2024
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".

Completed
Last Updated: 22 May 2025 13:36 by ADMIN
Release 2025.2.520 (2025 Q2)
As a result, the glyphs are not measured and arranged properly. The issue applies to TrueType and Type1 fonts.
Completed
Last Updated: 13 Feb 2026 09:39 by ADMIN
Release 2026.1.210 (2026 Q1)
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.

Completed
Last Updated: 22 May 2025 13:37 by ADMIN
Release 2025.2.520 (2025 Q2)
ADMIN
Created by: Martin
Comments: 0
Category: PdfProcessing
Type: Feature Request
0
Export AdditionalActions of the page when merging pages with PdfStreamWriter.
Completed
Last Updated: 22 May 2025 13:36 by ADMIN
Release 2025.2.520 (2025 Q2)
When a signed document containing an image with Indexed color space is import-exported the image data seems corrupted.
Completed
Last Updated: 15 Aug 2025 13:49 by ADMIN
Release 2025.3.806 (2025 Q3)

The StokeAlphaContant is not handled correctly when applied on a TextFragment:

Completed
Last Updated: 14 Jan 2026 14:30 by ADMIN
Mangled Right-To-Left (RTL) content when multiple lines of text are drawn.
Unplanned
Last Updated: 21 Feb 2025 10:59 by Gal
Incorrect positioning of Right-to-left (RTL) numbers.
Unplanned
Last Updated: 10 Mar 2025 09:45 by João
Created by: João
Comments: 0
Category: PdfProcessing
Type: Feature Request
0
Handwritten Signature is a type of biometric signature that relies on capturing unique biometric data from a person's handwritten signature.
Completed
Last Updated: 12 Nov 2025 14:55 by ADMIN
Release 2025.4.1104 (2025 Q4)
This is the code the for replicating the error: 
using Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Streaming;
using Telerik.Windows.Documents.Fixed.Model.Editing;
using Telerik.Windows.Documents.Fixed.Model.InteractiveForms;
using Telerik.Windows.Documents.Fixed.Model;
using Telerik.Documents.Primitives;
using System.Diagnostics;
using System.Reflection.Metadata;
using Telerik.Windows.Documents.Fixed.FormatProviders.Pdf;

namespace _1681158PdfInputFields
{
    internal class Program
    {
        static void Main(string[] args)
        {
           ExportExamplePdfForm();

        }

        public static void ExportExamplePdfForm()
        {
            RadFixedDocument fixedDoc = new RadFixedDocument();
            RadFixedPage fixedPage = fixedDoc.Pages.AddPage();
            FixedContentEditor editor = new FixedContentEditor(fixedPage);
            editor.Position.Translate(100, 100);
           
            
            TextBoxField textBox = new TextBoxField("textBox");
            fixedDoc.AcroForm.FormFields.Add(textBox);
            textBox.Value = "Sample text...";
            Size widgetDimensions = new Size(200, 30); 
            DrawNextWidgetWithDescription(editor, "TextBox", (e) => e.DrawWidget(textBox, widgetDimensions));

            string fileName = "output.pdf";
            File.Delete(fileName);
            // File.WriteAllBytes(fileName, new PdfFormatProvider().Export(fixedDoc, TimeSpan.FromSeconds(15)));


            string ResultFileName = "result.pdf";
            File.Delete(ResultFileName);
            using (PdfStreamWriter writer = new PdfStreamWriter(File.OpenWrite(ResultFileName)))
            {
                foreach (RadFixedPage page in fixedDoc.Pages)
                {
                    writer.WritePage(page);
                }
            }

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

            Console.WriteLine("Document created.");

             
        }

        private static void DrawNextWidgetWithDescription(FixedContentEditor editor, string description, Action<FixedContentEditor> drawWidgetWithEditor)
        {
            double padding = 20;
            drawWidgetWithEditor(editor);

            Size annotationSize = editor.Root.Annotations[editor.Root.Annotations.Count - 1].Rect.Size;
            double x = editor.Position.Matrix.OffsetX;
            double y = editor.Position.Matrix.OffsetY;

            Block block = new Block();
            block.TextProperties.FontSize = 20;
            block.VerticalAlignment = Telerik.Windows.Documents.Fixed.Model.Editing.Flow.VerticalAlignment.Center;
            block.InsertText(description);
            editor.Position.Translate(x + annotationSize.Width + padding, y);
            editor.DrawBlock(block, new Size(editor.Root.Size.Width, annotationSize.Height));

            editor.Position.Translate(x, y + annotationSize.Height + padding);
        }
    }
}
Unplanned
Last Updated: 02 Apr 2025 12:34 by Jian
Created by: Jian
Comments: 0
Category: PdfProcessing
Type: Feature Request
0

Introduce Sanitize Document functionality.

https://experienceleague.adobe.com/en/docs/document-cloud-learn/acrobat-learning/advanced-tasks/redact
https://helpx.adobe.com/acrobat/using/removing-sensitive-content-pdfs.html

Completed
Last Updated: 22 May 2025 13:36 by ADMIN
Release 2025.2.520 (2025 Q2)

I have a simple program that imports a PDF, calls AcroForm.FlattenFormFields(), and calls Export() on the PdfFormatProvider. With the attached example PDF I am seeing the following exception.

System.NotImplementedException: 'The method or operation is not implemented.'

Stack Trace

at Telerik.Windows.Documents.Core.Fonts.Type1.Type1Format.Type1FontSource.GetCapHeight()
   at Telerik.Windows.Documents.Core.Fonts.FontSource.get_CapHeight()
   at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.Fonts.FontDescriptor.CopyRequiredButType3FontPropertiesFrom(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.SimpleFontObject.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.ExceptionHandling.ExecutionHandler.TryHandleExecution[E](Action operation)
   at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.PdfFormatProvider.ExportOverride(RadFixedDocument document, Stream output)