PDF Seitenzahl auslesen

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Madde.

    PDF Seitenzahl auslesen

    Hallo Zusammen,

    ich habe ein kleines Tool, welches mir in einem festen Pfad PDF-Dateien mittels Suchbegriff findet und in einer Listbox darstellt. Hier wird dann durch Markieren die gewünschte PDF in einen anderen Ordner kopiert und die Dateigröße ausgelesen. Dies wird dann in einer Messagebox gemeldet.
    Was mir jetzt noch fehlt, ist das Auslesen der PDF-Seitenzahl. Laut Recherche geht dies auf der Kommandozeile mit "Findstr"
    Mit findstr /B /C:"/Count" *.pdf auf der Kommandozeile funktioniert das auch.
    Wie bekommen ich den Befehl in meinen Code rein, sodass er mit "findstr /B /C:"Count" listbox1.selecteditem" die Datei durchsucht.
    Ich weiß, ich werde keinen fertigen Code bekommen, da hier viel Wert auf Eigeninitiative gelegt wird. Dies finde ich auch durchaus begrüßenswert. Ich bin aber ein absoluter Anfänger, der einfach nur versucht, sich paar Sachen zusammenzubauen.
    Ein Teil meines Codes schaut wie folgt aus.
    Seid gnädig ;)

    VB.NET-Quellcode

    1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    2. If ListBox1.SelectedItem Is Nothing Then
    3. MessageBox.Show("Die gewünschte Akte muss markiert sein", "Akte markieren", MessageBoxButtons.OK, MessageBoxIcon.Information)
    4. ElseIf ListBox1.Items.Count = 0 Then
    5. MessageBox.Show(Me, "Es wurde keine Akte geladen", "Keine Auswahl", MessageBoxButtons.OK, MessageBoxIcon.Information)
    6. Else
    7. Dim fi As New System.IO.FileInfo(ListBox1.SelectedItem)
    8. Label3.Text = Math.Round(fi.Length / 1024 / 1024, 2) & " MB"
    9. IO.File.Copy(ListBox1.SelectedItem.ToString, ".\Daten\Versandordner\" & IO.Path.GetFileName(ListBox1.SelectedItem.ToString))
    10. MessageBox.Show(Me, "Die Akte wurde erfolgreich gespeichert" & vbCrLf & vbCrLf & "Die Größe der Datei beträgt: " & Label3.Text & vbCrLf & vbCrLf & "Die Seitenanzahl beträgt: " & "kommt noch", "Erfolgreich", MessageBoxButtons.OK, MessageBoxIcon.Information)
    11. End If
    12. End Sub


    Gruß Madde
    Da gibt es die Regex-Variante -> PDF Datei Seitenanzahl auslesen
    Mir Persönlich gefällt die aber iText -Variante besser, da die Regex-Variante bei mir bei 1% der PDFs versagt hat.

    VB.NET-Quellcode

    1. Public Function GetNoOfPagesPDF11(ByVal sourcePdfPath As String) As Integer
    2. Dim reader As New iTextSharp.text.pdf.PdfReader(sourcePdfPath)
    3. Dim numberOfPages As Integer = reader.NumberOfPages
    4. reader.Close()
    5. Return numberOfPages
    6. End Function
    @HenryV: Ich bin derselben Meinung, die Stringsuche ist Quick&Dirty.
    Die saubere Lösung geht auf jeden Fall über einen Analyzer wie iText.

    Aber da er Anfänger ist, sollte man vielleicht noch dazu schreiben, dass dazu dem Projekt iTextSharp hinzugefügt werden muss (am besten über nuget).
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Aber da er Anfänger ist, sollte man vielleicht noch dazu schreiben, dass dazu dem Projekt iTextSharp hinzugefügt werden muss (am besten über nuget).


    Da hast Du Recht. Ich habe leider noch keinen Anhaltspunkt gefunden, wie ich iTextSharp in mein Projekt einbinde. Die Zeilen mit Imports iTextSharp.text etc. reichen ja nicht aus. Könnt Ihr mir einen Tipp geben, wie ich das einbinden kann?

    MfG Madde
    Wie gesagt, über NuGet.
    Hier ist eine Anleitung, wie du ein NuGet-Paket über Visual Studio direkt integrierst:
    docs.microsoft.com/en-us/nuget…-package-in-visual-studio
    Verwende als Suchstring iTextSharp.
    Die neueste Version ist 5.5.13
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()