C'è un modo per convertire ogni pagina in un documento XPS in un'immagine a livello di programmazione usando C#?Come convertire ogni pagina in un file XPS in un'immagine in C#?
risposta
Mi sono imbattuto in questo post del blog da Josh Twist che sembra fare ciò che vuoi.
a cercare la rete, ci sono molti programmi/prova a pagamento che pretendono di fare questo (non ho provato nessuno di loro, quindi non posso pronunciarmi/elencare uno di essi). Presumo che tu voglia scrivere il tuo codice.
Ecco la 'carne' del post del blog (condensato):
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));
}
Si prega di fare riferimento al accettato la answer è davvero utile (mi ha anche aiutato) .Io voglio solo notare per alcuni molto punto importante in quella soluzione.
se si implementa il proprio DocumentPaginator (come nel mio caso), allora che il codice non funzionerà, perché non avremo riferimento alla vostra Paginator specifica dalla dichiarazione
DocumentPaginator paginator = seq.DocumentPaginator;
Casting questo al tuo Paginator anche non funzionerà.
anche questa soluzione è molto complessa nel caso in cui tu abbia il tuo Paginator
.
Così ho sviluppato una soluzione semplificata, che si basava sulla soluzione accettata di questa domanda e questo ha funzionato esattamente come necessario.
// 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. Come posso usare Ghostscript per convertire XPS in PDF o XPS in DOC?
- 2. Come convertire un file in un dizionario?
- 3. convertire un file png in un file pcx utilizzando C#
- 4. come convertire C# in C++
- 5. come convertire PrintWriter in stringa o scrivere in un file?
- 6. Come convertire un file SVG in un file EMF in C#
- 7. come convertire un file XML in file CSV in javascript
- 8. Stampa intestazione in ogni pagina
- 9. Come convertire HTML in MarkDown in C#?
- 10. Convertire un file caricato in un file
- 11. Come convertire un file in Base64?
- 12. java: come convertire un file in utf8
- 13. Come convertire Excel.Range.Interior.Color in System.Drawing.Color in C#?
- 14. Come convertire DataRowView in DataRow in C#
- 15. come convertire stringa in byte [] in C#
- 16. Come convertire .docx in .pdf in C#
- 17. Come convertire TryCast in C#?
- 18. Come convertire DataRow in DataRowView in C#
- 19. Come convertire un file XML Blogger in un file WXR?
- 20. Come eseguire una funzione in ogni pagina in AngularJs
- 21. PDF a XPS Conversione tramite Microsoft XPS Document Writer
- 22. Come convertire un file separato da tabulazioni in formato CSV?
- 23. Come convertire un sbyte [] in byte [] in C#?
- 24. Come convertire un numero intero in char in C?
- 25. come convertire un tipo di valore in byte [] in C#?
- 26. Come convertire un GUID in una stringa in C#?
- 27. Come convertire un byte [] in datetime in C#?
- 28. Come convertire un geo-json complesso in wkt in C#?
- 29. Converti WPF (XAML) Controllo in documento XPS
- 30. Convertire un FileObject in un file
Grazie mille! Questo è esattamente quello che volevo; e l'ho usato e funziona! Grazie ancora! –
Eccellente, felice che abbia aiutato. –
Grazie per questa soluzione. Si potrebbe pensare che un'operazione relativamente semplice sarebbe molto più semplice di questo codice abbastanza denso ... non è esattamente ovvio. –