I have a method like so that takes HTML and returns a PDF:
private static Stream ConvertToPdf(string htmlFileContent)
{
var htmlProvider = new HtmlFormatProvider();
var htmlDocument = htmlProvider.Import(htmlFileContent);
var pdfProvider = new PdfFormatProvider();
var pdfMemoryStream = new MemoryStream();
pdfProvider.Export(htmlDocument, pdfMemoryStream);
pdfMemoryStream.Position = 0;
return pdfMemoryStream;
}
This method works perfectly on my local Windows dev box, but when I run it in a Fargate container in AWS ECS, I get the following exception if the HTML contains an image:
System.NotSupportedException: Not supported image format.
at Telerik.Windows.Documents.Fixed.Model.Resources.ImageSource.DoOnUnknownData(Byte[] unknownData, ImageQuality imageQuality, Action`1 doOnEncodedData)
at Telerik.Windows.Documents.Fixed.Model.Resources.ImageSource.InitializeImageInfoFromUnknownData(Byte[] unknownData, ImageQuality imageQuality)
at Telerik.Windows.Documents.Fixed.Model.Resources.ImageSource.EnsureImageInfo()
at Telerik.Windows.Documents.Fixed.Model.Resources.ImageSource.get_Width()
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.Objects.ImageXObject.CopyPropertiesFrom(IPdfExportContext context, ImageSource imageSource)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Export.PdfExportContext.GetResource(ImageSource resource)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Export.PdfContentExportContext.GetResource(ImageSource imageSource)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Export.ContentElementWriters.ImageWriter.WriteOverride(PdfWriter writer, IPdfContentExportContext context, Image element)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Export.ContentElementWriters.MarkableContentElementWriter`1.Write(PdfWriter writer, IPdfContentExportContext context, Object element)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Export.ContentElementWriters.ClippingWriter.WriteOverride(PdfWriter writer, IPdfContentExportContext context, Clipping clipping)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Export.ContentElementWriters.ContentElementWriter`1.Write(PdfWriter writer, IPdfContentExportContext context, Object element)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Export.ContentElementWriters.ContentRootWriter.WriteOverride(PdfWriter writer, IPdfContentExportContext context, IContentRootElement element)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Export.ContentElementWriters.ContentElementWriter`1.Write(PdfWriter writer, IPdfContentExportContext context, Object element)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Export.ContentElementWriters.ContentElementWriterBase.WriteElement(PdfWriter writer, IPdfContentExportContext context, Object element)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.DocumentStructure.ContentStream.BuildContentData(IPdfExportContext context, IResourceHolder resourceHolder, IContentRootElement contentRootElement)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.DocumentStructure.Page.CopyPropertiesFrom(IPdfExportContext context, RadFixedPage fixedPage)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.DocumentStructure.DocumentCatalog.CopyRadFixedPageProperties(RadFixedPage source, Page destination, IRadFixedDocumentExportContext context)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.DocumentStructure.DocumentCatalog.CopyPagePropertiesFrom(IRadFixedDocumentExportContext context)
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Elements.DocumentStructure.DocumentCatalog.CopyPropertiesFrom(IRadFixedDocumentExportContext 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)
at Telerik.Windows.Documents.Flow.FormatProviders.Pdf.PdfFormatProvider.ExportOverride(RadFlowDocument document, Stream output)
at Telerik.Windows.Documents.Common.FormatProviders.FormatProviderBase`1.Export(T document, Stream output)
Hi, i'm trying to use document processing to convert HTML template to PDF, but fonts are missing from resulting file, maybe even from the imported html.
How can I find out if the fonts are already missing after importing HTML?
What is the best way to convert HTML to PDF keeping images, fonts, etc. using document processing?
This is one of my attempts to get it to work.
static void Main(string[] args)
{
string templateFileName = @"html template.htm";
string pdfPath = @"test html template to pdf.pdf";
FileStream templateAsStream = new FileStream(templateFileName, FileMode.Open, FileAccess.Read);
///////////
//telerik
///////////
try
{
// Register the font
byte[] fontDataR = File.ReadAllBytes("Raleway-VariableFont_wght.ttf");
System.Windows.Media.FontFamily fontFamilyR = new System.Windows.Media.FontFamily("Releway");
byte[] fontDataRL = File.ReadAllBytes("Raleway-Light.ttf");
System.Windows.Media.FontFamily fontFamilyRL = new System.Windows.Media.FontFamily("Releway Light");
//Telerik.Windows.Documents.Fixed.Model.Fonts.
FontsRepository.RegisterFont(fontFamilyR, System.Windows.FontStyles.Normal, System.Windows.FontWeights.Normal, fontDataR);
FontsRepository.RegisterFont(fontFamilyRL, System.Windows.FontStyles.Normal, System.Windows.FontWeights.Normal, fontDataRL);
byte[] fontDataRb = File.ReadAllBytes("Raleway-Bold.ttf");
System.Windows.Media.FontFamily fontFamilyRb = new System.Windows.Media.FontFamily("Releway");
//Telerik.Windows.Documents.Fixed.Model.Fonts.
FontsRepository.RegisterFont(fontFamilyR, System.Windows.FontStyles.Normal, System.Windows.FontWeights.Bold, fontDataRb);
//import AFTER setting fonts
//Telerik.Windows.Documents.Flow.FormatProviders.Html.
HtmlFormatProvider htmlProvider = new HtmlFormatProvider();
HtmlImportSettings importSettings = new HtmlImportSettings();
HtmlExportSettings exportSettings = new HtmlExportSettings();
var document = htmlProvider.Import(templateAsStream);
PdfFormatProvider pdfProvider = new PdfFormatProvider();
//Telerik.Windows.Documents.Extensibility.FontsProviderBase fontsProvider = new FontsProvider();
//Telerik.Windows.Documents.Extensibility.FixedExtensibilityManager.FontsProvider = fontsProvider;
PdfExportSettings pdfExportSettings = new PdfExportSettings();
pdfExportSettings.ShouldEmbedFonts = true;
pdfProvider.ExportSettings = pdfExportSettings;
FileStream stream = File.Create("fixed pdf.pdf");
var radFixedDocument = (new Telerik.Windows.Documents.Flow.FormatProviders.Pdf.PdfFormatProvider()).ExportToFixedDocument(document);
var fixedFormatProvider = new Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.PdfFormatProvider();
fixedFormatProvider.Export(radFixedDocument, stream);
stream.Close();
//var resultBytes = pdfProvider.Export(document);
//File.WriteAllBytes(pdfPath, resultBytes);
}
catch(Exception e)
{
throw e;
}
I have also attached html file that is result of importing html and then export html
also I get this in pdf reader both if I use embed fonts option or not
https://www.telerik.com/forums/radflowdocument-to-pdf---arialnarrow-font-issues
Hi,
Im looking for the solution for Extraction of XML data from .txt file and convert into pdf file in ASP.net core
Thanks in advance
I am receiving an error when trying to convert a word doc to a PDF.
Here is the code:
var docxPRovider = new Telerik.Windows.Documents.Flow.FormatProviders.Docx.DocxFormatProvider();
var pdfProvider = new Telerik.Windows.Documents.Flow.FormatProviders.Pdf.PdfFormatProvider();
var docBytes = File.ReadAllBytes(path);
var document = docxPRovider.Import(docBytes);
var testFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "test.pdf");
var resultBytes = pdfProvider.Export(document);
File.WriteAllBytes(testFile, resultBytes);
Here is the error:
Could not load type 'System.Windows.Point' from assembly 'WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Export.PdfExportSettings..ctor()
at Telerik.Windows.Documents.Flow.FormatProviders.Pdf.Export.PdfExportSettings..ctor()
at Telerik.Windows.Documents.Flow.FormatProviders.Pdf.PdfFormatProvider..ctor()
The line in bold is where the error occurs. I verified I have WindowsBase and System.Windows as references in my project.
Any help would be appreciated.
hello,
i'm working on function to export word to PDF, and the result is inconherent, i'm loosing the special caracter like "é" , "ô". the document is in french language, also the style of wording of the document.
this is my function, any suggestion to resolve it?
regards.
public static void ConvertWordtopdf(string input, string output)
{
var docxProvider = new Telerik.Windows.Documents.Flow.FormatProviders.Docx.DocxFormatProvider();
var pdfProvider = new Telerik.Windows.Documents.Flow.FormatProviders.Pdf.PdfFormatProvider();
try
{
//var docxBytes = File.ReadAllBytes(input);
var docxBytes = System.IO.File.OpenRead(input);
RadFlowDocument docx = docxProvider.Import(docxBytes);
var pdfBytes = pdfProvider.Export(docx);
File.WriteAllBytes(output, pdfBytes);
docxBytes.Dispose();
}
catch (Exception ex)
{
;
}
}