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()
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.
I am using .net 7. I originally hit it with Telerik.UI.for.Wpf.70.Xaml.2023.3.1114. I updated to Telerik.UI.for.Wpf.70.Xaml.2024.1.423 to see if it was fixed but it still appears to happen.
I have attached a sample program which shows the behavior. Original.xlsm was created in Excel and has an image embedded in cell A1. Call ImportWorkbook with the path to the original file. Then export that workbook (unchanged) to the destination file.
Workbook workbook = ImportWorkbook( originalFileName ); ExportWorkbook( workbook, destinationFileName );
private Workbook ImportWorkbook( string fileName )
{
Telerik.Windows.Documents.Spreadsheet.Model.Workbook workbook;
IWorkbookFormatProvider formatProvider = new Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsm.XlsmFormatProvider();
using( Stream input = new FileStream( fileName, FileMode.Open ) )
{
workbook = formatProvider.Import( input );
}
return workbook;
}
private void ExportWorkbook( Workbook workbook, string fileName )
{
Telerik.Windows.Documents.Spreadsheet.FormatProviders.IWorkbookFormatProvider formatProvider = new Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsm.XlsmFormatProvider();
using( Stream output = new FileStream( fileName, FileMode.Create ) )
{
formatProvider.Export( workbook, output );
}
}
Steps to reproduce:
1.Create a zip archive for a txt file with password protection
2. Try updating the protected file and insert a new text line for example.
As a result, an error occurs: System.ObjectDisposedException: 'Cannot access a closed Stream.'
Imports System.IO
Imports System.Text
Imports Telerik.Windows.Zip
Module Module1
Sub Main()
Dim sZipFilePath As String = "..\..\test.zip"
File.Delete(sZipFilePath)
CreateArchive(sZipFilePath)
Dim decryptionSettings As DecryptionSettings = EncryptionSettings.CreateDecryptionSettings()
AddHandler decryptionSettings.PasswordRequired, AddressOf DecryptionSettings_PasswordRequired
Dim compressionSettings As CompressionSettings = Nothing
Dim encoding As Encoding = Nothing
Using oFS As FileStream = File.Open(sZipFilePath, FileMode.OpenOrCreate)
Using oArchive As ZipArchive = ZipArchive.Update(oFS, encoding, compressionSettings, decryptionSettings)
For Each entry As ZipArchiveEntry In oArchive.Entries
Using entryStream As Stream = entry.Open()
Dim reader As New StreamReader(entryStream)
Dim content As String = reader.ReadToEnd()
entryStream.Seek(0, SeekOrigin.End)
Dim writer As New StreamWriter(entryStream)
writer.WriteLine("Updated line.")
writer.Flush()
End Using
Next
End Using
End Using
End Sub
Private Sub CreateArchive(sZipFilePath As String)
Using stream As Stream = File.Open(sZipFilePath, FileMode.Create)
Dim encryptionSettings As PasswordEncryptionSettings = encryptionSettings.CreatePkzipPasswordEncryptionSettings()
encryptionSettings.Password = "MyPassword"
Dim compressionSettings As CompressionSettings = Nothing
Dim encoding As Encoding = Nothing
Using archive As ZipArchive = ZipArchive.Create(stream, encoding, compressionSettings, encryptionSettings)
Using entry As ZipArchiveEntry = archive.CreateEntry("text.txt")
Dim writer As StreamWriter = New StreamWriter(entry.Open())
writer.WriteLine("Hello world!")
writer.Flush()
End Using
End Using
End Using
End Sub
Private Sub DecryptionSettings_PasswordRequired(ByVal sender As Object, ByVal e As PasswordRequiredEventArgs)
e.Password = "MyPassword"
End Sub
End Module
Hello, I had many problems with version 2023.1.117, latest stable 2023.2.606 is unusable also due to issue with scanned documents etc, so I tried 2020.2.703-hotfix, but I am getting other set of issues.
Unfortunately I cannot share the documents, since they are confidential.
With some documents I am getting this error:
Unable to cast object of type 'Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Types.PdfName' to type 'Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.Objects.FormXObject'.
Loading Code:
PdfFormatProvider pdfFormatProvider = new();
RadFixedDocument document = pdfFormatProvider.Import(bytes);
And stack trace:
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Converters.AppearanceConverter.ConvertFromDictionary(PostScriptReader reader, IPdfImportContext context, PdfDictionary dictionary)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Converters.AppearanceConverter.Convert(Type type, PostScriptReader reader, IPdfImportContext context, IPdfPrimitive value)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Converters.AppearanceConverter.ConvertFromIndirectReference(Type type, PostScriptReader reader, IPdfImportContext context, IndirectReference indirectReference)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Converters.AppearanceConverter.Convert(Type type, PostScriptReader reader, IPdfImportContext context, IPdfPrimitive value)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Converters.AppearancesConverter.TryImportAppearance(String key, PostScriptReader reader, IPdfImportContext context, PdfDictionary appearancesDictionary, Appearance& appearance)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Converters.AppearancesConverter.ConvertFromDictionary(Type type, PostScriptReader reader, IPdfImportContext context, PdfDictionary dictionary)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Converters.Converter.Convert(Type type, PostScriptReader reader, IPdfImportContext context, IPdfPrimitive value)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Data.PdfPropertyBase`1.PrepareValue(PostScriptReader reader, IPdfImportContext context, IPdfPrimitive value)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Data.LoadOnDemandPropertyBase`1.GetValueFromSource(Boolean shouldDecrypt)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Data.LoadOnDemandPropertyBase`1.GetValue(Boolean shouldDecrypt)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.Annotations.AnnotationObject.get_Appearances()
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.Annotations.AnnotationObject.ToAnnotation(PostScriptReader reader, IRadFixedDocumentImportContext context, Double pageHeightInDip)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.DocumentStructure.Page.<>c__DisplayClass21_0.<CopyPageAnnotationsTo>b__0()
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.ExceptionHandling.ExecutionHandler.TryHandleExecution[E](Action operation)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.DocumentStructure.Page.CopyPageAnnotationsTo(IRadFixedDocumentImportContext context, RadFixedPage fixedPage)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.DocumentStructure.DocumentCatalog.<>c__DisplayClass59_2.<CopyAllPageProperties>b__2()
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.ExceptionHandling.ExecutionHandler.TryHandleExecution[E](Action operation)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.DocumentStructure.DocumentCatalog.CopyAllPageProperties(PostScriptReader reader, IRadFixedDocumentImportContext context, List`1 contextPages, IList`1 pages)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.DocumentStructure.DocumentCatalog.CopyPagePropertiesTo(PostScriptReader reader, IRadFixedDocumentImportContext context)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.DocumentStructure.DocumentCatalog.CopyPropertiesTo(PostScriptReader reader, IRadFixedDocumentImportContext context)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Import.RadFixedDocumentImportContext.BeginImportOverride()
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Import.BaseImportContext.BeginImport(Stream pdfFileStream)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Import.PdfImporter.Import(Stream input, IPdfImportContext context)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.PdfFormatProvider.<>c__DisplayClass18_0.<ImportOverride>b__0()
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.ExceptionHandling.ExecutionHandler.TryHandleExecution[E](Action operation)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.PdfFormatProvider.ImportOverride(Stream input)
at Telerik.Windows.Documents.Common.FormatProviders.FormatProviderBase`1.Import(Stream input)
at Telerik.Windows.Documents.Common.FormatProviders.BinaryFormatProviderBase`1.Import(Byte[] input)
at Client.Wpf.Common.UserControls.PdfViewer.LoadBytesToPdfViewer(Byte[] bytes) in C:\Users\tomas.filip\source\repos\FiFi\Client.Wpf\Common\UserControls\PdfViewer.xaml.cs:line 65
at System.Reactive.AnonymousSafeObserver`1.OnNext(T value)
at System.Reactive.ObserveOnObserverNew`1.DrainStep(ConcurrentQueue`1 q)
at System.Reactive.ObserveOnObserverNew`1.DrainShortRunning(IScheduler recursiveScheduler)
at System.Reactive.Concurrency.DispatcherScheduler.<>c__DisplayClass12_0`1.<Schedule>b__0()
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.DispatcherOperation.InvokeImpl()
at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
I'm trying to use the PdfFormatProvider to import a pdf. I've tried to import multiple different pdfs with the code below, but they all throw an exception with "System.InvalidOperationException: 'Import not supported.'" and no other info. Is this a bug or am I not calling the correct method to import a pdf?
var providerPDF = new Telerik.Windows.Documents.Flow.FormatProviders.Pdf.PdfFormatProvider(); providerPDF.Import(File.ReadAllBytes(@"D:\TestDocs\TestImage.pdf"));
Hello,
I'm using Telerik Documents Processing 2023.1.410
With WordsProcessing, if I add a table in a footer it will automatically add a space after the table
Here an example, my table is the same size as my image in background and I removed all margin of the section:
Here the code:
Footer footer = section.Footers.Add(HeaderFooterType.Default) section.PageMargins = new Padding(0,96,96,0); section.FooterBottomMargin = 0; Table table = footer.Blocks.AddTable(); TableRow row = table.Rows.AddTableRow(); TableCell cell = row.Cells.AddTableCell(); Paragraph paragraph = cell.Blocks.AddParagraph(); paragraph.Inlines.AddRun("Something");
I didn't any properties to manage spaces around a Table like in Paragraph.
It can be reproduced without the image
Work around:
If I add a new paragraph at the end and remove all spaces of this paragraph then it works
Here the code added:
paragraph = footer.Blocks.AddParagraph();
paragraph.Spacing.SpacingAfter = 0;
paragraph.Spacing.SpacingBefore = 0;
paragraph.Spacing.LineSpacing = 0;
Regards,
Hervouet Thomas
When importing an XLSX that has "Date" number-formatted cells, and those cells have the 5-digit representation of th edate, XslxFormatProvider.Import(bytes) will throw a KeyNotFoundException. The exception message is "The given key '58' was not present in the dictionary" for the particular case we're looking at.
Unfortunately, we cannot provide the file itself, as it has PHI in it. And, when we open it in Excel and resave it, Excel will automatically convert the 5-digit representation to a normal date. This new file will import just fine. However, we're trying to cut out that intermediate step.
Pertinent portion of the stack trace:
at System.ThrowHelper.ThrowKeyNotFoundException[T](T key)
1. Line Height is not converted properly. for example, if we set the line height is 1.5 in angular UI editor, in PDF is not shown properly,
2. Table alignment is not proper - After resizing the in the angular editor, the same alignment is not converted in PDF. I think colgroup and cols custom tags are not considering while converting the PDF.
public string AppendPdfList(string[] append)
{
PdfFormatProvider provider = new PdfFormatProvider();
RadFixedDocument targetDocument = new RadFixedDocument();
provider.ImportSettings.DocumentUnhandledException += (o, args) => { args.Handled = true; };
// Iterate through the files you would like to merge
foreach (string documentName in append)
{
RadFixedDocument sourceDocument = provider.Import(File.ReadAllBytes(documentName));
targetDocument.Merge(sourceDocument);
}
TelerikPdfHelper.ClearDuplicatedFonts(targetDocument);
OutputFilename = Path.GetTempFileName();
File.WriteAllBytes(OutputFilename, provider.Export(targetDocument));
return OutputFilename;
}
Results in System.NotImplementedException: 'The method or operation is not implemented.
I have read that there limitations to PDF files being imported, however, the file being imported was generated with FixedContentEditor, so, should be able to import?
using (Stream stream = Stream)Hi,
I am trying to convert a HTML body to a PDF using HtmlFormatProvider and PdfFormatProvider.
It works well when I try to create a pdf with "normal" characters, but when I use characters like "åäö" the characters is either missing or replaced with other character.
I have found a similiar issue but that was due to the fact that the person was using .net core I am using .net framework.
Am I missing something when I am converting it to a PDF or is there a limitation with special characters like "åäö".
private string CreateAndStorePdf(string htmlBody)
{
Telerik.Windows.Documents.Extensibility.JpegImageConverterBase jpegImageConverter = new Telerik.Documents.ImageUtils.JpegImageConverter();
Telerik.Windows.Documents.Extensibility.FixedExtensibilityManager.JpegImageConverter = jpegImageConverter;
var provider = new HtmlFormatProvider();
var document = provider.Import(htmlBody);
var exportProvider = new PdfFormatProvider();
var fixedExportProvider = new Telerik.Windows.Documents.Flow.FormatProviders.Pdf.PdfFormatProvider();
var fileName = "_original.pdf";
try
{
using (var outputStream = new MemoryStream())
{
exportProvider.Export(fixedExportProvider.ExportToFixedDocument(document), outputStream);
outputStream.Seek(0, SeekOrigin.Begin);
var pdfBytes = new BinaryReader(outputStream).ReadBytes((int)outputStream.Length);
return fileName;
}
}
catch (Exception ex)
{
Log.Error(ex, "The pdf could not be created.");
return null;
}
}
Dear Team,
when I create a pdf with your components (RadFixedDocument, RadFixedPage, FixedContentEditor) I cannot add a "german umlaut" in that report because then it cannot be viewed in your own pdfviewer- control (the exception is: Error loading document: Position is out of range).
I tried to solve this in "creating/ loading" arial.ttf as external font (even this is weird as idea), but this also did not work.
What is your solution for that?
I bought the Telerik components basically for PDF processing, this simply needs to work...
Many thanks for an urgent update on that!
Best regards
Tobias
I open an xlsx file thant i create with Excel and edit it with RadSpreadProcessing.
But then I can't display it in a RadSpreadsheet control. An error is displayed during execution on localhost.
Here is the error message:
Exception non gérée à la ligne 48298, colonne 17 dans http://localhost:53844/Telerik.Web.UI.WebResource.axd?_TSM_HiddenField_=RadScriptManager1_TSM&compress=1&_TSM_CombinedScripts_=;;System.Web.Extensions,+Version=4.0.0.0,+Culture=neutral,+PublicKeyToken=31bf3856ad364e35:fr-CA:bc17b1ef-7a1b-49cb-a795-5f1c64597a53:ea597d4b:b25378d2;Telerik.Web.UI:fr-CA:b87b3d5b-f055-4852-bdaf-fef1991116e3:16e4e7cd:f7645509:22a6274a:33715776:8674cba1:7c926187:88144a7a:b7778d6c:c08e9f8a:59462f1:a51ee93e:24ee1bba:6d43f6d9:e330518b:1e771326:8e6f0d33:864068a5:6a6d718d:58366029:874f8ea2:4cd1fec6:71188da4:487c8be1:670fdf23:d944e0f6:c442ac3f:ec7335e:2e4adfe5:b4bec146:77613e24:69667591:a4c22f0d:e0037459:2f872eeb:75e7b247:b9057478:e8e3832e:728f182a:c4143936:5f88c545:6ed7f76e:32b48b51:935ec1c6:f0c58c30:16dc2978:1611ddf4:1bfaef2a:26e91122:c128760b:a7e79140:185812c5:f46195d3:6b3f73b3:2003d0b8:aa288e2d:b092aa46:a44b89c4:c8618e41:e4f8f289:1a73651d:16d8629e:2bef5fcc:a9b7ace7:e085fe68:52af31a4:5fa37e7e
0x800a139e - Erreur d’exécution JavaScript: Expected op «,» but found punc «;» (input: IF(D8<>0;E8/D8;0))
If a workbook was created with Excel, an error prevents it from being opened programmatically in a RadSpreadsheet control. Although it can be displayed there using the open button of the RadSpreadsheet. This error does not occur if you copy the contents of this workbook into the RadSpreadsheet and then save it with the save button on the RadSpreadsheet.
Thank you
I'm trying to use RadWordsProcessing
to replace text in .docx documents.
when i try to open a document i have an error:
BadImageFormatException: Could not load file or assembly 'PresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (0x80131058)