Unplanned
Last Updated: 11 Mar 2025 09:50 by Jeanot
Jeanot
Created on: 11 Mar 2025 09:50
Category: PdfProcessing
Type: Bug Report
0
PdfProcessing: NullReferenceException when using PdfStreamWriter
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);
        }
    }
}
0 comments