Hi@all
Eigentlich ist @Joshi schuld daran das ich diesen Code vorstelle. In einem anderen Thread hat Joshi erwähnt ich solle mir doch mal die PDF Geschichte von den PowerToys anschauen. Hab ich gemacht und bin dann auf Windows.Data.Pdf.dll gekommen die eine Funktion PdfCreateRenderer exportiert und dafür DirectX benötigt. Letzteres um dann die Seiten einer PDF auf einen D2DDeviceContext oder IDXGISurface zu rendern. Also irgendwie nicht das gelbe vom Ei und der Namespace Windows.Data.Pdf ist auch eher was für UWP-Apps. Also hab ich mal das Internet durchsucht und bin auf folgendes Posting von iseahound gestoßen: autohotkey.com/boards/viewtopic.php?t=80735&start=20
Also alle APIs und Headerfiles (für die Interfaces) zusammengesucht, das ganze nachgebaut und ein bissel erweitert. Jau, läuft. Wichtig: Auch ich habe das gleiche Problem mit dem Speicher wie im Autohotkey-Thread beschrieben. Falls da jemand eine Lösung hat, immer her damit. Anonsten ist das absoluter Quick&Dirty Testcode und auf die schnelle zusammen geschrieben. Von daher, es darf gern verbessert und erweitert werden. Was kann der Code: PDFs mit und ohne Passwort öffnen, Seiten als Bild darstellen, skalieren, Hintergrundfarbe ändern, Auschnitt aus der Seite darstellen und Seiten als Bilddatei speichern. Im Hintergrund wird wahrscheinlich dennoch DirectX und die Windows Imaging Component (WIC) verwendet um eine PDF-Seite als Bild zu rendern. IPdfPageRenderOptions::get_BitmapEncoderId gibt hier die Encoder-GUID des PNG-WIC-Encoder aus. Per IPdfPageRenderOptions::put_BitmapEncoderId könnte daher auch eine andere WIC-Encoder-GUID gesetzt werden. Im IStream befindet sich dann ein entsprechendes anderes Bildformat das man dann über WIC als Datei (Heif, WMPhoto, DDS) speichern könnte.
Eigentlich ist @Joshi schuld daran das ich diesen Code vorstelle. In einem anderen Thread hat Joshi erwähnt ich solle mir doch mal die PDF Geschichte von den PowerToys anschauen. Hab ich gemacht und bin dann auf Windows.Data.Pdf.dll gekommen die eine Funktion PdfCreateRenderer exportiert und dafür DirectX benötigt. Letzteres um dann die Seiten einer PDF auf einen D2DDeviceContext oder IDXGISurface zu rendern. Also irgendwie nicht das gelbe vom Ei und der Namespace Windows.Data.Pdf ist auch eher was für UWP-Apps. Also hab ich mal das Internet durchsucht und bin auf folgendes Posting von iseahound gestoßen: autohotkey.com/boards/viewtopic.php?t=80735&start=20
Also alle APIs und Headerfiles (für die Interfaces) zusammengesucht, das ganze nachgebaut und ein bissel erweitert. Jau, läuft. Wichtig: Auch ich habe das gleiche Problem mit dem Speicher wie im Autohotkey-Thread beschrieben. Falls da jemand eine Lösung hat, immer her damit. Anonsten ist das absoluter Quick&Dirty Testcode und auf die schnelle zusammen geschrieben. Von daher, es darf gern verbessert und erweitert werden. Was kann der Code: PDFs mit und ohne Passwort öffnen, Seiten als Bild darstellen, skalieren, Hintergrundfarbe ändern, Auschnitt aus der Seite darstellen und Seiten als Bilddatei speichern. Im Hintergrund wird wahrscheinlich dennoch DirectX und die Windows Imaging Component (WIC) verwendet um eine PDF-Seite als Bild zu rendern. IPdfPageRenderOptions::get_BitmapEncoderId gibt hier die Encoder-GUID des PNG-WIC-Encoder aus. Per IPdfPageRenderOptions::put_BitmapEncoderId könnte daher auch eine andere WIC-Encoder-GUID gesetzt werden. Im IStream befindet sich dann ein entsprechendes anderes Bildformat das man dann über WIC als Datei (Heif, WMPhoto, DDS) speichern könnte.
Mfg -Franky-
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „-Franky-“ ()