Hallo an alle hilfreichen Geister!..........
Ich bin auf VB.net 2008 ziemlich unerfahren und beschäftige mich gerade mit einem brennenden Problem aus der Praxis:
Es gilt PDF-Dateien als Bilddatei automatisiert zu speichern. (A0 bis A4-Zeichnungen ins Format Tiff, Komprimierung GTITT4, (Fax 4), Monochrom)
Grundsätzlich geht das ja auf manuellem Weg über den PDFCreator (virtueller Drucker) hervorragend, da dieser beim Abspeichern ca. 6 verschiedene Bildformate anbietet und diese auch perfekt beherrscht. Gleichzeitig bringt der PDFCreator auch eine COM-Komponente mit, die in VB.net verwendbar ist. Leider sind die Möglichkeiten dieser Schnittstelle fast nicht dokumentiert und auch sehr beschränkt (die 2 mitgelieferten VB.net-Beispiele helfen auch nicht wirklich weiter).
Nach langem Suchen und ausprobieren bin ich dann auf den PDF2Image-Converter gestoßen, der eigentlich die meisten Optionen verspricht. Mit dieser Trialversion wird auch ein Beispielcode mitgeliefert, den ich allerdings auf VB.net 2008 einfach nicht zum Laufen bekomme:
Public Class PDF2ImageConverter
Private Declare Function PDFToImageConverter Lib "pdf2image.dll" _
(ByVal szPDFFileName As String, ByVal szOutputName As String, _
ByVal szUserPassword As String, ByVal szOwnPassword As String, _
ByVal xresolution As Integer, ByVal yresolution As Integer, ByVal bitcount As Integer, _
ByVal compression As Integer, ByVal quality As Integer, ByVal grayscale As Integer, _
ByVal multipage As Integer, ByVal firstPage As Integer, ByVal lastPage As Integer) As Integer
Private Declare Sub PDFToImageSetCode Lib "pdf2image.dll" (ByVal szRegcode As String)
Public Enum CompressionType
COMPRESSION_NONE = 1 '/* dump mode */
COMPRESSION_CCITTRLE = 2 '/* CCITT modified Huffman RLE */
COMPRESSION_CCITTFAX3 = 3 '/* CCITT Group 3 fax encoding */
COMPRESSION_CCITTFAX4 = 4 '/* CCITT Group 4 fax encoding */
COMPRESSION_LZW = 5 '/* Lempel-Ziv & Welch */
COMPRESSION_JPEG = 7 '/* JPEG DCT compression */
COMPRESSION_PACKBITS = 32773 '/* Macintosh RLE */
End Enum
Public Sub New()
End Sub
Public Function ConvertPDFToImage(ByVal strInputPDF As String, ByVal strOutputImage As String, _
ByVal strUsername As String, ByVal strPassword As String, _
ByVal lngXDPI As Long, ByVal lngYDPI As Long, ByVal lngBitCount As Long, _
ByVal enumCompression As CompressionType, ByVal lngQuality As Long, _
ByVal blnGreyscale As Boolean, ByVal blnMultipage As Boolean, _
ByVal lngFirstPage As Long, ByVal lngLastPage As Long) As Long
' Register PDF to Image Converter Library
PDFToImageSetCode "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
ConvertPDFToImage = PDFToImageConverter(strInputPDF, strOutputImage, strUsername, strPassword, _
lngXDPI, lngYDPI, lngBitCount, enumCompression, lngQuality, blnGreyscale, _
blnMultipage, lngFirstPage, lngLastPage)
End Function
End Class
Für meine Kenntnisse stellt sich die Frage: Wie bekomme ich die Funktion so hin, dass ich mit einem Klick auf "Button1" einer "Form" die Funktion "ConvertPDFToImage" mit den Parametern
("D:\Temp\Seppl.pdf", "D:\Temp\Seppl.tif", "Konrad", "konrad", 300, 300, 2, 4, 2, 0, 0, 1, 1)
dazu bewegen kann, die PDF-Datei ins Bild zu konvertieren?
Wie müsste ich das VB.net-Projekt aufbauen und wie die Funktion ansprechen?
Mein letzter Versuch war:
PublicClass Form1
PrivateDeclareFunction PDFToImageConverter Lib"pdf2image.dll" _(ByVal szPDFFileName AsString, ByVal szOutputName AsString, _
ByVal szUserPassword AsString, ByVal szOwnPassword AsString, _ByVal xresolution AsInteger, ByVal yresolution AsInteger, ByVal bitcount AsInteger, _
ByVal compression AsInteger, ByVal quality AsInteger, ByVal grayscale AsInteger, _
ByVal multipage AsInteger, ByVal firstPage AsInteger, ByVal lastPage AsInteger) AsIntegerPrivateDeclareSub PDFToImageSetCode Lib"pdf2image.dll" (ByVal szRegcode AsString)
PublicEnum CompressionType
COMPRESSION_NONE = 1 '/* dump mode */
COMPRESSION_CCITTRLE = 2 '/* CCITT modified Huffman RLE */
COMPRESSION_CCITTFAX3 = 3 '/* CCITT Group 3 fax encoding */
COMPRESSION_CCITTFAX4 = 4 '/* CCITT Group 4 fax encoding */
COMPRESSION_LZW = 5 '/* Lempel-Ziv & Welch */
COMPRESSION_JPEG = 7 '/* JPEG DCT compression */
COMPRESSION_PACKBITS = 32773 '/* Macintosh RLE */
EndEnumPublicFunction ConvertPDFToImage(ByVal strInputPDF AsString, ByVal strOutputImage AsString, _
ByVal strUsername AsString, ByVal strPassword AsString, _ByVal lngXDPI
Ich bin auf VB.net 2008 ziemlich unerfahren und beschäftige mich gerade mit einem brennenden Problem aus der Praxis:
Es gilt PDF-Dateien als Bilddatei automatisiert zu speichern. (A0 bis A4-Zeichnungen ins Format Tiff, Komprimierung GTITT4, (Fax 4), Monochrom)
Grundsätzlich geht das ja auf manuellem Weg über den PDFCreator (virtueller Drucker) hervorragend, da dieser beim Abspeichern ca. 6 verschiedene Bildformate anbietet und diese auch perfekt beherrscht. Gleichzeitig bringt der PDFCreator auch eine COM-Komponente mit, die in VB.net verwendbar ist. Leider sind die Möglichkeiten dieser Schnittstelle fast nicht dokumentiert und auch sehr beschränkt (die 2 mitgelieferten VB.net-Beispiele helfen auch nicht wirklich weiter).
Nach langem Suchen und ausprobieren bin ich dann auf den PDF2Image-Converter gestoßen, der eigentlich die meisten Optionen verspricht. Mit dieser Trialversion wird auch ein Beispielcode mitgeliefert, den ich allerdings auf VB.net 2008 einfach nicht zum Laufen bekomme:
Public Class PDF2ImageConverter
Private Declare Function PDFToImageConverter Lib "pdf2image.dll" _
(ByVal szPDFFileName As String, ByVal szOutputName As String, _
ByVal szUserPassword As String, ByVal szOwnPassword As String, _
ByVal xresolution As Integer, ByVal yresolution As Integer, ByVal bitcount As Integer, _
ByVal compression As Integer, ByVal quality As Integer, ByVal grayscale As Integer, _
ByVal multipage As Integer, ByVal firstPage As Integer, ByVal lastPage As Integer) As Integer
Private Declare Sub PDFToImageSetCode Lib "pdf2image.dll" (ByVal szRegcode As String)
Public Enum CompressionType
COMPRESSION_NONE = 1 '/* dump mode */
COMPRESSION_CCITTRLE = 2 '/* CCITT modified Huffman RLE */
COMPRESSION_CCITTFAX3 = 3 '/* CCITT Group 3 fax encoding */
COMPRESSION_CCITTFAX4 = 4 '/* CCITT Group 4 fax encoding */
COMPRESSION_LZW = 5 '/* Lempel-Ziv & Welch */
COMPRESSION_JPEG = 7 '/* JPEG DCT compression */
COMPRESSION_PACKBITS = 32773 '/* Macintosh RLE */
End Enum
Public Sub New()
End Sub
Public Function ConvertPDFToImage(ByVal strInputPDF As String, ByVal strOutputImage As String, _
ByVal strUsername As String, ByVal strPassword As String, _
ByVal lngXDPI As Long, ByVal lngYDPI As Long, ByVal lngBitCount As Long, _
ByVal enumCompression As CompressionType, ByVal lngQuality As Long, _
ByVal blnGreyscale As Boolean, ByVal blnMultipage As Boolean, _
ByVal lngFirstPage As Long, ByVal lngLastPage As Long) As Long
' Register PDF to Image Converter Library
PDFToImageSetCode "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
ConvertPDFToImage = PDFToImageConverter(strInputPDF, strOutputImage, strUsername, strPassword, _
lngXDPI, lngYDPI, lngBitCount, enumCompression, lngQuality, blnGreyscale, _
blnMultipage, lngFirstPage, lngLastPage)
End Function
End Class
Für meine Kenntnisse stellt sich die Frage: Wie bekomme ich die Funktion so hin, dass ich mit einem Klick auf "Button1" einer "Form" die Funktion "ConvertPDFToImage" mit den Parametern
("D:\Temp\Seppl.pdf", "D:\Temp\Seppl.tif", "Konrad", "konrad", 300, 300, 2, 4, 2, 0, 0, 1, 1)
dazu bewegen kann, die PDF-Datei ins Bild zu konvertieren?
Wie müsste ich das VB.net-Projekt aufbauen und wie die Funktion ansprechen?
Mein letzter Versuch war:
PublicClass Form1
PrivateDeclareFunction PDFToImageConverter Lib"pdf2image.dll" _(ByVal szPDFFileName AsString, ByVal szOutputName AsString, _
ByVal szUserPassword AsString, ByVal szOwnPassword AsString, _ByVal xresolution AsInteger, ByVal yresolution AsInteger, ByVal bitcount AsInteger, _
ByVal compression AsInteger, ByVal quality AsInteger, ByVal grayscale AsInteger, _
ByVal multipage AsInteger, ByVal firstPage AsInteger, ByVal lastPage AsInteger) AsIntegerPrivateDeclareSub PDFToImageSetCode Lib"pdf2image.dll" (ByVal szRegcode AsString)
PublicEnum CompressionType
COMPRESSION_NONE = 1 '/* dump mode */
COMPRESSION_CCITTRLE = 2 '/* CCITT modified Huffman RLE */
COMPRESSION_CCITTFAX3 = 3 '/* CCITT Group 3 fax encoding */
COMPRESSION_CCITTFAX4 = 4 '/* CCITT Group 4 fax encoding */
COMPRESSION_LZW = 5 '/* Lempel-Ziv & Welch */
COMPRESSION_JPEG = 7 '/* JPEG DCT compression */
COMPRESSION_PACKBITS = 32773 '/* Macintosh RLE */
EndEnumPublicFunction ConvertPDFToImage(ByVal strInputPDF AsString, ByVal strOutputImage AsString, _
ByVal strUsername AsString, ByVal strPassword AsString, _ByVal lngXDPI