Unplanned
Last Updated: 29 Jul 2024 12:11 by ADMIN
Part of the stack trace: 
System.OutOfMemoryException: Insufficient memory to continue the execution of the program.
   at System.Text.StringBuilder.ExpandByABlock(Int32 minBlockCharCount)
   at System.Text.StringBuilder.AppendWithExpansion(Char value)
   at System.Text.StringBuilder.Append(Char value)
   at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Utilities.CrossReferenceCollectionReader.GetAllText(Reader reader, Int64 minOffset, Int64 maxOffset)
   at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Utilities.CrossReferenceCollectionReader.FindAllObjectOffsets(Reader reader, Dictionary`2 tokenToOffsets, Int64 minOffset, Int64 maxOffset)
Completed
Last Updated: 24 Jul 2024 11:41 by ADMIN
Release 2024.2.426 (2024 Q2)

When exporting a document with the .NET Framework implementation, only subsets of the used fonts are embedded in the document. This is currently not available in the Silverlight implementation, and it most probably won't be available in the .NET Standard implementation, as the current implementation is dependent on the WPF font classes. Provide API to plug similar logic when using different platforms as well.

This item wil handle the TrueType OpenType Font format. For the Compact Font Format (CFF) please follow: Export subset of Compact Font Format (CFF) fonts for platforms different than .NET Framework

Unplanned
Last Updated: 19 Jul 2024 10:42 by Lucas

NullReferenceException is thrown when Find API is used on a newly created document.

Workaround: Export - Import the document before using the Find API

PdfFormatProvider pdfFormatProvider = new PdfFormatProvider();
byte[] exportedDocument = pdfFormatProvider.Export(document);
document = pdfFormatProvider.Import(exportedDocument);

 

Unplanned
Last Updated: 18 Jul 2024 08:46 by Joe

Encoding table headers are preserved when creating subsets.

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: 20 Jun 2024 09:21 by ADMIN
ADMIN
Created by: Deyan
Comments: 2
Category: PdfProcessing
Type: Feature Request
7
Square annotation displays a rectangle on the page. When opened, it displays a pop-up window containing the text of the associated note.
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);
            }
        }
Declined
Last Updated: 05 Jun 2024 15:15 by ADMIN

SkiaImageFormatProvider: Rectangle behind text overlaps the text of previous line.

RESOLVED: The issue is dismissed. The actual reason for the results is missing FontsProvider implementation. In order for accurate calculations and measurements the fonts used in the document need to be resolved correctly.

Unplanned
Last Updated: 04 Jun 2024 10:34 by Kishan
Improve performance of Block.Measure for large chunks of text.
Completed
Last Updated: 27 May 2024 10:29 by ADMIN
Release 2024 Q1
Created by: Joe
Comments: 4
Category: PdfProcessing
Type: Feature Request
7

ZUGFeRD (acronym for Zentraler User Guide des Forums elektronische Rechnung Deutschland) is a specification for the electronic invoice format of the same name.

The feature depends on the following features:

Completed
Last Updated: 23 May 2024 06:34 by ADMIN
Release 2024.2.426 (2024 Q2)
In scenarios with negative font and/or negative horizontal scaling the text is not rendered correctly.
Duplicated
Last Updated: 21 May 2024 13:54 by ADMIN
Created by: Petr
Comments: 2
Category: PdfProcessing
Type: Feature Request
1

Hi Telerik,

Could you add abbility to contact TSA (timestamp) server and sign PDF document with certificate (which is currently supported) and signed timestamp?

Thank you

Unplanned
Last Updated: 20 May 2024 07:23 by ADMIN
Embedding a TrueType font collection using the FontsRepository.RegisterFont method leads to glyphs with empty outlines collection. The missing outlines are caused due to an empty glyf and loca tables of the TrueType font file.
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 14:22 by ADMIN
Release 2024.2.426 (2024 Q2)

Currently, a NullReferenceException is thrown because of the incorrect structure. 

As a workaround, the exception can be handled using the Handling Exceptions mechanism.

Update:
When importing documents with invalid structure of path construction operators an InvalidGraphicOperandsCountException is thrown which could be handled using the Handling Exceptions mechanism.

PdfFormatProvider provider = new PdfFormatProvider();
provider.ImportSettings.DocumentUnhandledException += this.ImportSettings_DocumentUnhandledException;

private void ImportSettings_DocumentUnhandledException(object sender, DocumentUnhandledExceptionEventArgs e)
{
    if (e.Exception is InvalidGraphicOperandsCountException)
    {
        e.Handled = true;
    }
}

Declined
Last Updated: 15 May 2024 07:13 by ADMIN
Created by: Vitalii
Comments: 2
Category: PdfProcessing
Type: Bug Report
1
Hi.

I'm currently working with the large PDFs. I'm able to process PDFs up to 2.1 GB easily without any error using Telerik Document Processing. However, if I take a larger PDF (e.g. 2.8 GB), PdfFormatProvider.Import throws an IOException with the next message: "The parameter is incorrect. : {path}".
I'm using FileStream to provide a sample for the Import method.

I've checked it with the different samples, all have the same behavior. So, I guess, it will work for any PDF larger than 2.1 GB.
Completed
Last Updated: 15 May 2024 06:30 by ADMIN
Release 2024.2.426 (2024 Q2)
A dictionary with an invalid entry cannot be imported correctly and breaks the import process. 
Completed
Last Updated: 15 May 2024 06:30 by ADMIN
Release 2024.2.426 (2024 Q2)

I have the following form:

From the screen shot above you can see that the line above 75 is perfectly ok i.e. it doesn't go and intersect with the lines of the 72

but when i perform the following code


            var InputFileWithInteractiveForms = "C:\\Users\\Abhishek.Shrestha\\Downloads\\Template\\form-ub04.pdf";
            var finaldPDFName = "C:\\Users\\Abhishek.Shrestha\\Downloads\\TestABCPDF\\output2322.pdf";
            List<byte[]> filledupForms = new List<byte[]>();
            PdfFormatProvider provider = new PdfFormatProvider();
                
                RadFixedDocument document = provider.Import(File.ReadAllBytes(InputFileWithInteractiveForms));

                var formfields = document.AcroForm.FormFields;

                var formFieldsCopy = new List<FormField>(document.AcroForm.FormFields);

                // Iterate over the copied form fields and replace the dot character in their names for solving merging issue
                foreach (var field in formFieldsCopy)
                {
                    field.Name = field.Name.Replace(".", "");
                }
                
               //added this as the values were being hidden by editable fields
                document.AcroForm.ViewersShouldRecalculateWidgetAppearances = true;

                filledupForms.Add(provider.Export(document));
                File.WriteAllBytes(finaldPDFName, provider.Export(document));

I get the following output:


               
Completed
Last Updated: 15 May 2024 06:30 by ADMIN
Release 2024.2.426 (2024 Q2)

According to the PDF specification:
A clipping path operator (W or W*) may appear after the last path construction operator and before the path-painting operator that terminates a path object.

Invalid:

W                          % clipping path operator
0 0 m                     % start of the path construction
596 0 l
596 842 l
0 842 l
h                            % end of the path construction
n                            % path-painting operator
Valid:
0 0 m
596 0 l
596 842 l
0 842 l
h
W
n

Currently (in the invalid cases), the path construction is skipped on import.

Completed
Last Updated: 15 May 2024 06:29 by ADMIN
Release 2024.2.426 (2024 Q2)
Import-export causes missing characters with a specific document.