2011-03-18 33 views
11

Me gustaría agregar una imagen al encabezado de un documento MigraDoc, pero codificar una ruta del sistema de archivos en la generación de documentos es un poco problemático para una serie de cuestiones, entre ellas, la menos importante. que me hace un poco mareado, pero también, para mantener el despliegue simple (r).Agregar imagen de recurso incrustado al documento MigraDoc

Me parecería ideal si pudiera incrustar la imagen como un recurso en el ensamblaje, y simplemente extraerla cuando fuera necesaria para el PDF, pero no parece haber ninguna manera directa o incorporada para hacer esto. Cualquier trucos o ideas?

Respuesta

5

No, MigraDoc no permite esto. Hay un truco, pero solo funciona si usa ASP .NET y no está utilizando la vista previa del documento. Ver estos hilos en el foro oficial que explican el problema en detalle:

Puede utilizar los recursos incrustados a través de una solución, es decir, guardarlos temporalmente y eliminarlos a través de la elimine el método y el destructor después de que haya terminado. Ejemplo:

BitmapImage bi = new BitmapImage(); 
bi.BeginInit(); 
bi.UriSource = new Uri("pack://application:,,/Resources/temp.png"); 
bi.EndInit(); 
PngBitmapEncoder pbe = new PngBitmapEncoder(); 
pbe.Frames.Add(BitmapFrame.Create(bi)); 
using (FileStream fs = new FileStream("temp.png", FileMode.Create)) 
{ 
    pbe.Save(fs); 
} 

continuación, puede utilizar vía MigraDocObject.AddImage("temp.png"); pero asegúrese de borrar la imagen después o añadir un cheque si la imagen ya existe y si tiene el tamaño de archivo correcto (en caso de que el usuario lo reemplazó).

2

PDFSharp/MigraDoc 1.50 incluye otra forma de hacerlo. Desde el MigraDoc wiki:

Con PDFsharp 1.50 beta 2, se añadió una nueva característica: MigraDoc ahora acepta nombres de archivos que contengan imágenes codificado en base 64 con el prefijo "base 64". En este caso, el nombre de archivo no se refiere a un archivo, el nombre de archivo contiene todos los bits del mapa de bits en una cadena ASCII con la codificación BASE64.

Cuestiones relacionadas