Как использовать изображение ресурсов с PDFsharp? - PullRequest
0 голосов
/ 21 января 2019

Я использую библиотеку PDFsharp для некоторых простых манипуляций с файлами PDF.
У меня есть следующий код для копирования изображения из папки в существующий документ PDF - он работает как положено:

public void AddImagePDF()
{
  this.DrawPage(this.PDFdoc.Pages[0]);
  this.DrawPage(this.PDFdoc.Pages[1]);
  this.DrawPage(this.PDFdoc.Pages[2]);
}
private void DrawPage(PdfPage page)
{
  XGraphics gfx = XGraphics.FromPdfPage(page);
  DrawPng(gfx);
}
private void DrawPng(XGraphics gfx)
{

  XImage imageMu = XImage.FromFile(@"C:\Images\AnImage.png");
  double width = imageMu.PixelWidth * 7.0 / imageMu.HorizontalResolution;
  double height = imageMu.PixelHeight * 7.0 / imageMu.HorizontalResolution;
  gfx.DrawImage(imageMu,500,30,width,height); 

  this.PDFdoc.Save(this.DestinationFullPath);
}

Чтобы сделать решение более портативным, я переместил файл изображения AnImage.png в ресурсы проектов - здесь:

Properties.Resources.AnImage

Но какие изменения мне нужно внести вкод, чтобы использовать файл ресурсов, а не файл, сохраненный на C-Drive?

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Вы можете использовать метод FromGdiPlusImage из pdfsharp, например:

XImage imageMu = XImage.FromGdiPlusImage(Properties.Resources.AnImage);

Ответ приходит из другого поста о переполнении стека и ответа на:

Как получить путь к Properties.Resources.Image в .NET

Если, как вы сказали в своем комментарии, вы не можете использовать FromGdiPlusImage, есть возможность загрузить его в виде потока, это было извлечено из другого поста переполнения стека:

System.Reflection.Assembly thisExe = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream file = 
    thisExe.GetManifestResourceStream("Properties.Resources.AnImage.png");
Ximage yourImage = XImage.FromStream(file);

Загрузка изображения из области ресурсов проекта в C # - ответ Дэвида Икарди

0 голосов
/ 21 января 2019

Вы можете использовать XImage.FromStream после получения потока для ресурса изображения.

Кстати: он более эффективен и, вероятно, будет создавать меньшие PDF-файлы, если вы создадите XImage только один раз и будете использовать его для всех страниц.

...