Czy istnieje sposób na konwersję każdej strony w dokumencie XPS do obrazu programowo za pomocą C#?Jak przekonwertować każdą stronę w pliku XPS na obraz w języku C#?
Odpowiedz
Przebiegłem ten wpis na blogu od Josh Twist, który wydaje się robić to, co chcesz.
Na przeszukiwania sieci, istnieje wiele płatnych programów/próby, które twierdzą, aby to zrobić (nie próbowałem żadnej z nich, więc nie mogę ręczyć/wymienić żadnego z nich). Zakładałem, że chcesz napisać własny kod.
Oto „mięso” z blogu (skrócone):
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));
}
Proszę odnieść się do przyjętego answer to jest naprawdę pomocny (pomógł mi też) .I po prostu chcą zwrócić uwagę na kilka bardzo ważny punkt w tym rozwiązaniu.
jeśli wdrażają własne DocumentPaginator (jak w moim przypadku), a następnie, że kod nie będzie działać, ponieważ nie będzie odniesienie do konkretnego paginator z rachunku
DocumentPaginator paginator = seq.DocumentPaginator;
Casting to na swój paginator także nie będzie działać.
również to rozwiązanie jest bardzo skomplikowane, jeśli masz własny Paginator
.
Opracowałem więc uproszczone rozwiązanie, które opierało się na przyjętym rozwiązaniu tego pytania i działało dokładnie tak, jak było to konieczne.
// 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. Batch Konwersja pliku PDF na XPS
- 2. Jak przekonwertować plik XPS na obraz w wysokiej jakości (zamiast rozmytej niskiej rozdzielczości)?
- 3. Jak przekonwertować TryCast w języku C#?
- 4. Jak przekonwertować stronę html na zdjęcie
- 5. pobrać całą stronę internetową w języku C#
- 6. Jak przekonwertować ciąg na bajt w języku C#?
- 7. W języku C#, jak przekonwertować typ danych TimeSpan na DateTime?
- 8. Utwórz obraz z pliku .dot w języku C#
- 9. Jak przekonwertować LinearLayout na obraz?
- 10. Jak przekonwertować tekst na obraz?
- 11. Powielone obrazy wydrukowane w pliku XPS
- 12. Jak przekonwertować obraz do określonego rozmiaru pliku?
- 13. Jakość zapisanego pliku JPG w języku C#
- 14. Jak mogę przekonwertować kody binarne na obraz png w qml?
- 15. Rysowanie obróconego tekstu na obraz w języku C#
- 16. Jak zapisać obiekt graficzny jako obraz w języku C#?
- 17. Jak obrócić obraz x stopni w języku C#?
- 18. przekonwertować tekst na obraz w php
- 19. Jak przekonwertować obraz base64?
- 20. Przekształcanie pliku PDF na obraz w celu odczytania kodów QR
- 21. Jak przekonwertować plik TIF na format PNG w języku Java?
- 22. Jak odwzorować zawartość pliku XML na obiekty w języku C#
- 23. Blokowanie na każdą klawiaturę Mapa w języku Java
- 24. Zapisywanie pliku dziennika w języku c/C++
- 25. Jak przekonwertować obiekt InputStream na ciąg w języku Java?
- 26. Jak przekonwertować obraz na segmenty znaków?
- 27. Jak przekonwertować pole Włócznika na obraz dokera
- 28. Jak przekonwertować plik System.IO.Stream na obraz?
- 29. Jak przekonwertować mapę bitową na obraz
- 30. Jak mogę przekonwertować wygląd Kontroli na obraz?
Dziękuję bardzo! Dokładnie tego chciałem; i użyłem go i działa! Dzięki jeszcze raz! –
Wspaniale, cieszę się, że pomogło. –
Dzięki za to rozwiązanie. Można by pomyśleć, że stosunkowo prosta operacja byłaby dużo łatwiejsza niż ten dość gęsty kod ... nie jest to dokładnie oczywiste. –