Sicherheit einer PDF-Datei überprüfen (Acrobat)

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von BahnhofsChiller.

    Sicherheit einer PDF-Datei überprüfen (Acrobat)

    Guten Tag VB-Begeisterte,

    nach langer Zeit melde ich mich mal wieder mit einem Problem, welches mir Kopfzerbrechen bereitet.
    Ich habe ein WinForms-Projekt mit VB.NET geschrieben, welches mir mehrere PDF-Dokumente in ein einzelnes PDF-Dokument speichern kann. Realisiert wird das Ganze mit der Acrobat-Library, welche ich als Verweis hinzugefügt habe.
    Die Dateien werden mit Hilfe eines Mulitselect-OpenFileDialog in eine ListBox geladen. Die Einträge dieser ListBox werden später im Sub ​btnMergeFiles_Click zum Zusammenfügen weiterverwendet.

    VB.NET-Quellcode

    1. Private Sub btnMergeFiles_Click(sender As Object, e As EventArgs) Handles btnMergeFiles.Click
    2. ​Imports Acrobat
    3. Imports System.IO
    4. Dim iNumPages as Integer
    5. Dim iNumPagesSub as Integer
    6. Dim appAcrobat as Acrobat.AcroApp
    7. Dim apddSummary as Acrobat.AcroPDDoc
    8. Dim apddSingle as Acrobat.AcroPDDoc
    9. appAcrobat = New Acrobat.AcroApp
    10. apddSummary = New Acrobat.AcroPDDoc
    11. apddSingle = New Acrobat.AcroPDDoc
    12. '
    13. ' For-Schleife mit If-Abfrage, ob Datei schreib- oder passwortgeschützt
    14. '
    15. apddSummary.Open(Cstr(Me.ListBox1.Items(0)))
    16. For Each strFound as String in Me.ListBox1.Items
    17. If Me.ListBox1.Items.IndexOf(strFound) > 0 Then
    18. iNumPages = apddSummary.GetNumPages()
    19. apddSingle.Open(strFound)
    20. iNumPagesSub = apddSingle.GetNumPages()
    21. apddSummary.InsertPages(iNumPages -1, apddSingle, 0, iNumPagesSub, CInt(True))
    22. apddSingle.Close()
    23. End If
    24. Next
    25. '
    26. ' Hier geht der Code weiter
    27. '
    28. End Sub
    29. End Class

    Nur gibt es jetzt das Problem, dass eine Datei, welche z.B. schreib- oder passwortgeschützt ist, nicht mit den anderen PDF-Dokumenten zusammengefügt werden kann. Mir wird aber kein Fehlercode o. Ä. angezeigt.
    Was ich jetzt machen möchte ist, dass ich innerhalb einer For-Each-Schleife ​Zeile 16 eine If-Abfrage starte, die jedes eingelesene Dokument auf die Sicherheit überprüft und mir, falls etwas vorliegt, eine Fehlermeldung ausgibt und diese Datei überspringt.
    Ich habe schon so viele Möglichkeiten (FileInfo,FileStream) ausprobiert, aber leider ohne Erfolg.

    Gibt es eine Möglichkeit, die Dokumentsicherheit innerhalb von Acrobat aufzurufen und auszulesen, um damit in meinem VB-Projekt weiterzuarbeiten?
    In der Adobe-Support-Community scheint dieses Problem auch nicht zu existieren.

    P.S.: Ich weiß, dass andere Anbieter (iText,etc.) auch sowas anbieten, aber ich arbeite nun mal mit Acrobat.

    Beste Grüße!