Hier ist so wenig los, da muss ich mal wieder für ein wenig Durchsatz sorgen Hallo Freunde,
nach langer Zeit mal wieder eine spezielle Frage
Ich bräuchte in einem Programm ein Preview von PDF-Dateien, also nur die Anzeige der ersten Seite einer PDF-Datei in einer Picture-Box.
Vorgeschichte:
Ursprünglich hatte ich dazu die entsprechende DLL des Adobe-Readers verwendet, das hat für mich funktioniert (war eigentlich mehr, als ich brauche). Ich habe dazu die DLL der 32bit-Version des Adobe-Readers verwendet. Voraussetzung war, dass dieser 32-bit Adobe Reader auf dem jeweiligen Rechner installiert ist- so war das in der Regel bei uns auch immer.
Jetzt wird von der IT auf neuen Rechnern die 64bit-Version automatisch vorinstalliert, wozu auch immer.
Leider kann ich nicht gleichzeitig beider Versionen als Verweis einbauen.
Also Suche nach alternativ-Lösung: ich habe für mich die Nuget-Pakete freeware.pdf2png" und "freespire.pdf" gefunden.
Freeware.Pdf2Png wäre genau das richtige, da kann ich mit wenigen Zeilen eine PDF-Datei in einer Picture-Box darstellen- wie gesagt: ich brauche nur die 1. Seite der PDF-Datei.
Das funktioniert. Aber: Wenn auf dem betreffenden Rechner die Zeichenskalierung auf >100% eingestellt ist, dann beim Laden der PDF-Datei die komplette Form auf einmal runter skaliert auf 100%. Siehe auf diesem Filmchen .
Hier der Code-Auszug für Freeware.Pdf2Png:
Code:
Sub LoadFreewarePdf2PngPreview()
Using FileStream As New IO.FileStream(PdfDateipfad, IO.FileMode.Open)
Using MemoryStream As New IO.MemoryStream
Dim RawBytes = Freeware.Pdf2Png.Convert(FileStream, 1)
MemoryStream.Write(RawBytes, 0, RawBytes.Count)
PictureBox1.Image = Drawing.Image.FromStream(MemoryStream)
End Using
End Using
End Sub
Freespire.Pdf funktioniert sogar noch einfacher, das Skalierungsproblem habe ich hier nicht, das ist alles wunderbar.
Leider ist die Freespire.pdf auf max. 3seitiges PDF beschränkt, bei größeren PDF-Dokumenten tritt eine Exception auf, und die Picturebox bleibt leer.
Code-Auszug für Freespire.Pdf:
Code:
Sub LoadSpireSPDPreview()
Try
Using doc As New PdfDocument
doc.LoadFromFile(PdfDateipfad)
Dim myBitMap As Image = doc.SaveAsImage(0)
PictureBox1.Image = myBitMap
End Using
Catch ex As Exception
End Try
End Sub
Hat jemand eine Idee, wie ich das Skalierungsproblem von freeware.pdf2png beheben kann?
Oder weiß jemand noch eine freie Alternative ohne die o.g. Einschränkungen?
Vielen Dank schon mal für's Nachdenken
------------------
Klaus
http://www.alko-tech.com | mein Gästebuch
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP