Moin,
ich wandle in einer Funktion ein XPS-Dokument in eine Grafik um:
Diese Methode wird innerhalb eines Backgroud-Workers aufgerufen - zumindest ist dies der Plan. Denn ich erhalte zur Laufzeit die meldung, dass
Nun ist aber das Multi-Threading ein wichtiger Teil meiner Applikation. Seht ihr eine andere Möglichkeit, XPS Dokumente in JPG umzuwandeln (JPG brauche ich als
Danke euch!
ich wandle in einer Funktion ein XPS-Dokument in eine Grafik um:
VB.NET-Quellcode
- Private Function xpsToImage(XPSpath As String) As Byte()
- Dim xps As New System.Windows.Xps.Packaging.XpsDocument(XPSpath, System.IO.FileAccess.Read)
- Dim sequence As FixedDocumentSequence = xps.GetFixedDocumentSequence()
- Dim page As DocumentPage = sequence.DocumentPaginator.GetPage(0)
- Dim qualityFactor As UShort = 3
- Dim toBitmap As New RenderTargetBitmap(CInt(page.Size.Width * qualityFactor), CInt(page.Size.Height * qualityFactor), 100 * qualityFactor, 100 * qualityFactor, System.Windows.Media.PixelFormats.[Default])
- toBitmap.Render(page.Visual)
- Dim Encoder = New JpegBitmapEncoder With {
- .QualityLevel = 90
- }
- Encoder.Frames.Add(BitmapFrame.Create(toBitmap))
- Using stream As New MemoryStream
- Encoder.Save(stream)
- Return stream.ToArray()
- End Using
- End Function
Diese Methode wird innerhalb eines Backgroud-Workers aufgerufen - zumindest ist dies der Plan. Denn ich erhalte zur Laufzeit die meldung, dass
Dim xps As New System.Windows.Xps.Packaging.XpsDocument(XPSpath, System.IO.FileAccess.Read)
nicht per MTA (Multi Threaded Appartment) aufgerufen werden kann, sondern nur per STA.Nun ist aber das Multi-Threading ein wichtiger Teil meiner Applikation. Seht ihr eine andere Möglichkeit, XPS Dokumente in JPG umzuwandeln (JPG brauche ich als
Byte()
)?Danke euch!