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 });
   }

Unplanned
Last Updated: 17 May 2024 13:59 by Axel
Example: 
16 0 obj
<</AP<</N<</Off null/On 188 0 R>>/D<</Off 189 0 R/On 190 0 R>>>>/AS/Off/F 4/FT/Btn/H/T/P 19 0 R/Rect[ 40.3 690.45 56.15 706.7999]/Subtype/Widget/T(Einraeumung:Grabnutzungsrechts)/Type/Annot>>
endobj

 
Unplanned
Last Updated: 17 May 2024 11:45 by Bob
AngleSharp.Dom.DomException when importing a file with CSS style that starts with ".\!".
Unplanned
Last Updated: 17 May 2024 11:19 by ADMIN
It will be possible to add an SVG element in a RadFixedPage so that it can be exported to PDF via the RadPdfProcessing library.
Pending Review
Last Updated: 17 May 2024 10:30 by Petr
Created by: Petr
Comments: 0
Category: PdfProcessing
Type: Feature Request
0

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: 17 May 2024 08:29 by Vyacheslav
Unplanned
Last Updated: 17 May 2024 07:49 by Vyacheslav
In Development
Last Updated: 16 May 2024 15:55 by ADMIN

The hanging indent of the paragraph affects the rendering of content with tabs. However, the indent is not respected while generating the PDF, leading to disordered content.

Workaround: Insert a tab stop with the position set to the value for hanging indent:

foreach (var paragraph in this.flowDocument.EnumerateChildrenOfType<Paragraph>())
{
    if (paragraph.Properties.HangingIndent.HasLocalValue)
    {
        Run run = paragraph.EnumerateChildrenOfType<Run>().Where(r => r.Text == "\t").FirstOrDefault();

        if (run != null)
        {
            paragraph.TabStops = paragraph.TabStops.Insert(new Telerik.Windows.Documents.Flow.Model.Styles.TabStop(paragraph.Properties.HangingIndent.LocalValue.Value));
        }

    }
}

Unplanned
Last Updated: 16 May 2024 13:28 by ADMIN
ADMIN
Created by: Tanya
Comments: 2
Category: WordsProcessing
Type: Feature Request
1
Add support for importing the text values of the input element. They could be imported as a simple text to preserve the content.
Unplanned
Last Updated: 16 May 2024 11:18 by ADMIN

The value of the TextBoxField is not visible until the field is clicked.

Workaround: Force content update:

foreach (var widget in textBoxField.Widgets)
{
    widget.RecalculateContent();
}

If the update still doesn't fix the issue, change the font prior to setting the value of the field:

foreach (var widget in textBoxField.Widgets)
{
    widget.TextProperties.Font = FontsRepository.Helvetica;
}
Another option could be to set the ViewersShouldRecalculateWidgetAppearances to true in order to force the viewers to update the appearance of the widgets.
Completed
Last Updated: 16 May 2024 10:42 by ADMIN
Created by: IGNACIO
Comments: 0
Category: WordsProcessing
Type: Feature Request
1
The AlternateContent element is used to store content which is not defined by the specification.
In Development
Last Updated: 16 May 2024 08:29 by ADMIN

Wrong exported paragraph indentation when the paragraph is in a table cell.

Workaround: Iterate table`s paragraphs and set the negative indentations to zero:

IEnumerable<Table> tables = this.document.EnumerateChildrenOfType<Table>();
foreach (Table table in tables)
{
	IEnumerable<Paragraph> paragraphs = table.EnumerateChildrenOfType<Paragraph>();
	foreach (Paragraph paragraph in paragraphs)
	{
		if (paragraph.Indentation.LeftIndent < 0)
		{
			paragraph.Indentation.LeftIndent = 0;
		}
	}
}

Unplanned
Last Updated: 15 May 2024 16:13 by Anu
When HTML content is inserted, the formatting is lost if the HTML contains 3 tables in it. However, it is OK if the HTML contains 2 tables only.
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.
In Development
Last Updated: 15 May 2024 06:31 by ADMIN
Scheduled for 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

In Development
Last Updated: 15 May 2024 06:31 by ADMIN
Scheduled for 2024.2.426 (2024 Q2)
In scenarios with negative font and/or negative horizontal scaling the text is not rendered correctly.
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.

1 2 3 4 5 6