¿Hay alguna manera de convertir cada página de un documento XPS a una imagen mediante programación usando C#?¿Cómo convertir cada página en un archivo XPS a una imagen en C#?
Respuesta
Me encontré con esta publicación de blog desde Josh Twist que parece hacer lo que quiere.
En búsqueda de la red, hay muchos programas/juicio pagados que pretenden hacer esto (no he probado ninguno de ellos, así que no puedo dar fe/lista de cualquiera de ellos). Supuse que querías escribir tu propio código.
Aquí es la 'carne' de la entrada de blog (condensada):
Uri uri = new Uri(string.Format("memorystream://{0}", "file.xps"));
FixedDocumentSequence seq;
using (Package pack = Package.Open("file.xps", ...))
using (StorePackage(uri, pack)) // see method below
using (XpsDocument xps = new XpsDocument(pack, Normal, uri.ToString()))
{
seq = xps.GetFixedDocumentSequence();
}
DocumentPaginator paginator = seq.DocumentPaginator;
Visual visual = paginator.GetPage(0).Visual; // first page - loop for all
FrameworkElement fe = (FrameworkElement)visual;
RenderTargetBitmap bmp = new RenderTargetBitmap((int)fe.ActualWidth,
(int)fe.ActualHeight, 96d, 96d, PixelFormats.Default);
bmp.Render(fe);
PngBitmapEncoder png = new PngBitmapEncoder();
png.Frames.Add(BitmapFrame.Create(bmp));
using (Stream stream = File.Create("file.png"))
{
png.Save(stream);
}
public static IDisposable StorePackage(Uri uri, Package package)
{
PackageStore.AddPackage(uri, package);
return new Disposer(() => PackageStore.RemovePackage(uri));
}
Por favor refiérase a la answer aceptado que es realmente útil (me ayudó también) .I sólo quiero señalar a algunos muy punto importante en esa solución.
si está implementando su propio DocumentPaginator (como en mi caso), entonces ese código no funcionará porque no vamos a conseguir referencia a su Paginator específica de la declaración
DocumentPaginator paginator = seq.DocumentPaginator;
casting esto a su propia paginador también no trabajará.
también esa solución es muy compleja en caso de que tenga su propia Paginator
.
Así que desarrollé una solución simplificada, que basada en la solución aceptada de esta pregunta, funcionó exactamente como era necesario.
// create your own paginator instead of this
// this is my specific own implementation for DocumentPaginator class
ReportPaginator paginator = new ReportPaginator(report);
Visual visual = paginator.GetPage(0).Visual; // first page - loop for all
RenderTargetBitmap bmp = new RenderTargetBitmap((int)paginator.PageSize.Width, (int)paginator.PageSize.Height, 96d, 96d, PixelFormats.Default);
bmp.Render(visual);
PngBitmapEncoder png = new PngBitmapEncoder();
png.Frames.Add(BitmapFrame.Create(bmp));
using (MemoryStream sm = new MemoryStream())
{
png.Save(sm);
return sm.ToArray();
}
- 1. Lote Convertir PDF a XPS
- 2. Cómo convertir una página web html a una imagen
- 3. ¿Cómo puedo transmitir un documento XPS a un navegador e incrustarlo en una página web?
- 4. Convertir página web en imagen
- 5. Convertir un byte arry en una imagen OpenCV en C++
- 6. ¿Cómo convertir un pdf a una imagen?
- 7. ¿Cómo puedo usar Ghostscript para convertir XPS a PDF o XPS a DOC?
- 8. Convertir imagen a gráfica en C#
- 9. Programmatically (C#) convertir Excel en una imagen
- 10. Cómo convertir un nodo a una imagen en javafx 2.1?
- 11. Cómo leer un archivo XPS (página fija) y mostrar en la interfaz de usuario utilizando Silverlight
- 12. ¿Qué biblioteca C++ puedo usar para convertir un PDF a una imagen en Windows?
- 13. Convertir archivo PDF a HTML en C#
- 14. Cómo convertir una imagen a blanco y negro en PHP
- 15. Cómo convertir una matriz 2-D en una imagen en C#
- 16. WPF a XPS en orientación horizontal
- 17. Convertir archivo PDF a imágenes usando C#
- 18. ¿Puedo convertir un archivo .swf a un formato de imagen?
- 19. encabezado wkhtmltopdf en cada página
- 20. convertir imagen de blob a archivo en php
- 21. Cómo convertir una imagen JPG a PNG
- 22. Cómo puedo convertir un archivo binario a otra representación binaria, como una imagen
- 23. ¿Convertir una imagen a XAML?
- 24. ¿Convertir imagen a binario?
- 25. ¿Cómo convertir un archivo en un diccionario?
- 26. Php: Convertir un blob en un archivo de imagen
- 27. Guardar un FixedDocument en un archivo XPS provoca una pérdida de memoria
- 28. ¿Cómo convertir una imagen a codificación base64?
- 29. ¿Mejores formas de convertir XPS a PDF (y viceversa)?
- 30. cómo convertir una imagen en cadena base64
Gracias mucho! Esto es exactamente lo que quería; ¡y lo he usado y funciona! ¡Gracias de nuevo! –
Excelente, me alegro de que haya ayudado. –
Gracias por esta solución. Uno pensaría que una operación relativamente directa sería mucho más fácil que este código bastante denso ... no es exactamente obvio. –