How to convert image from URL in Excel to PDF?

15 Jun 20233 minutes to read

The image added from an URL/external link will be downloaded every time the spreadsheet is opened in Microsoft Excel. The image is not physically embedded into the Excel document but points to a web resource. As the image is not present, it would not be rendered in the converted PDF document.

But, this can be achieved by downloading the image prior and adding it into Excel. Please find the code snippet below.

using (ExcelEngine excelEngine = new ExcelEngine())
{
  IApplication application = excelEngine.Excel;
  application.DefaultVersion = ExcelVersion.Xlsx;
  IWorkbook workbook = application.Workbooks.Create(1);
  IWorksheet worksheet = workbook.Worksheets[0];

  WebClient client = new WebClient();
  byte[] imageData = client.DownloadData("https://cdn.syncfusion.com/content/images/company-logos/Syncfusion_Logo_Image.png");

  worksheet.Pictures.AddPicture(1, 1, 5, 7, Image.FromStream(new MemoryStream(imageData)));

  //Initialize XlsIO renderer.
  XlsIORenderer renderer = new XlsIORenderer();

  //Convert Excel document into PDF document 
  PdfDocument pdfDocument = renderer.ConvertToPDF(workbook);

  FileStream stream = new FileStream("ExcelToPDF.pdf", FileMode.Create, FileAccess.ReadWrite);
  pdfDocument.Save(stream);
  stream.Dispose();
}
using (ExcelEngine excelEngine = new ExcelEngine())
{
  IApplication application = excelEngine.Excel;
  application.DefaultVersion = ExcelVersion.Xlsx;
  IWorkbook workbook = application.Workbooks.Create(1);
  IWorksheet worksheet = workbook.Worksheets[0];

  WebClient client = new WebClient();
  byte[] imageData = client.DownloadData("https://cdn.syncfusion.com/content/images/company-logos/Syncfusion_Logo_Image.png");

  worksheet.Pictures.AddPicture(1, 1, 5, 7, Image.FromStream(new MemoryStream(imageData)));

  //Initialize XlsIO renderer.
  ExcelToPdfConverter converter = new ExcelToPdfConverter(workbook);

  //Convert Excel document into PDF document 
  PdfDocument pdfDocument = converter.Convert();

  FileStream stream = new FileStream("ExcelToPDF.pdf", FileMode.Create, FileAccess.ReadWrite);
  pdfDocument.Save(stream);
  stream.Dispose();
}
Using excelEngine As ExcelEngine = New ExcelEngine
  Dim application As IApplication = excelEngine.Excel
  application.DefaultVersion = ExcelVersion.Xlsx
  Dim workbook As IWorkbook = application.Workbooks.Create(1)
  Dim worksheet As IWorksheet = workbook.Worksheets(0)
  Dim client As WebClient = New WebClient
  Dim imageData() As Byte = client.DownloadData("https://cdn.syncfusion.com/content/images/company-logos/Syncfusion_Logo_Image.png")
  worksheet.Pictures.AddPicture(1, 1, 5, 7, Image.FromStream(New MemoryStream(imageData)))
  Dim converter As ExcelToPdfConverter = New ExcelToPdfConverter(workbook)
  Dim pdfDocument As PdfDocument = converter.Convert
  Dim stream As FileStream = New FileStream("ExcelToPDF.pdf", FileMode.Create, FileAccess.ReadWrite)
  pdfDocument.Save(stream)
  stream.Dispose
End Using