[gelöst] itext - Testen ob ein PDF encrypted ist



  • Guten Tag zusammen,

    ich habe mich in den letzten Tagen mit der itext-Bibliothek auseinandergesetzt;

    using iTextSharp.text;
    using iTextSharp.text.pdf;
    

    Nun möchte ich gern testen, ob ein PDF passwortgeschützt ist, doch ich komme nicht dahinter, wie ich die Methode verwenden soll. Die Methode hierfür habe ich in der iTextSharp.xml - Library gefunden:

    <member name="M:iTextSharp.text.pdf.PdfReader.IsEncrypted">
    Returns <CODE>true</CODE> if the PDF is encrypted.
    @return <CODE>true</CODE> if the PDF is encrypted
    </member>
    

    Aber wie wende ich sie an?

    string InputFile = (@"C:\Ausgabe\PDFitextTest.pdf");
    InputFile.iTextSharp.text.pdf.PdfReader.IsEncrypted();
    

    So geht es offenbar nicht und auch in die Klammern kann ich den string nicht setzen. Vielleicht ist aber auch der Datentyp string fehl am Platz, zumal ich ja sowieso irgendwann ganze Ordner testen möchte?

    Ich bin es leider noch gar nicht gewohnt, mit Libraries in dieser Form zu arbeiten, daher halte ich es für möglich, dass ich an einer ganz simplen Syntaxfrage scheitere.

    Ich bin für Tipps und Links offen. Das meiste zu itext ist leider in Java geschrieben.

    Viele Grüße, Yvonne

    PS: Und das hier ist auch keine Hausaufgabe, sondern "echt". 😉



  • Hallo,

    du mußt schon eine Instanz von PdfReader haben bzw. erzeugen:

    PdfReader reader = new PdfReader(filePath);
    bool isEncrypted = reader.IsEncrypted();
    

    s.a. checking if pdf is password protected using itextsharp



  • Danke Th69. Die von dir vorgeschlagene Lösung hat für nicht passwortgeschützte PDF-Dateien ausgereicht, für jene, die passwortgeschützt sind habe ich die "BadFormatException" erhalten. Hier bot aber der Link Abhilfe. Das Programm funktioniert jetzt.

    Danke für die schnelle Hilfe!

    class Program
        {
            static void Main(string[] args)
            {
                string pdf = (@"C:\Ausgabe\PDFitextTest.pdf");
                CheckPdfProtection(pdf);
            }
    
            private static void CheckPdfProtection(string pdf)
            {
                try
                {
                    PdfReader reader = new PdfReader(pdf);
                    if (!reader.IsEncrypted())
                    {
                        Console.WriteLine("PDF ist nicht passwortgeschützt");
                        Console.ReadLine();
                    }
                }
                catch (BadPasswordException)
                {
                    Console.WriteLine("PDF ist passwortgeschützt");
                    Console.ReadLine();
                }
            }
        }
    

Log in to reply