2013-08-29 1 views
3

MigraDoc обеспечивает вставку изображения, когда оно находится в каталоге приложения. Пример:Вставить «http» изображение в таблицу MigraDoc

Section section = document.AddSection();  
section.AddImage("../../SomeImage.png"); 

Когда я добавить HTTP путь к изображению в параметре .AddImage он отображает "Image не найден." в формате PDF.

Есть ли способ вставить http-образ в PDF, созданный MigraDoc?

ответ

4

Нет, вы не можете вставлять изображения по ссылке HTTP.

Загрузите изображение в локальную папку и добавьте эту локальную копию в документ MigraDoc.

При использовании PDFsharp вам не нужен локальный файл; вместо этого можно использовать объект Image.

Код для XImage.FromURI можно найти здесь (для PDFsharp):
http://forum.pdfsharp.de/viewtopic.php?p=4851&sid=4898a4ff0b0437cfdbb80bc48bdfed36#p4851

код, который позволяет MigraDoc сделать использование динамических изображений (не требует временного локального файла) можно найти здесь:
http://forum.pdfsharp.de/viewtopic.php?p=4123&sid=4898a4ff0b0437cfdbb80bc48bdfed36#p4123

Обновление:
С PDFsharp 1.50 beta 2 и более поздними версиями вы можете легко добавлять изображения в память (байт [] или такие). Если у вас есть только HTTP-ссылка, вам все равно придется загружать изображение самостоятельно. Но вам больше не нужен временный файл или исправленная версия MigraDoc.
More information on the MigraDoc site

Хитрость проста: конвертировать изображения в строку и передать в качестве имени файла с «base64:» префикс.

static string MigraDocFilenameFromByteArray(byte[] image) 
{ 
    return "base64:" + 
      Convert.ToBase64String(image); 
}