2017-03-23 1 views
1

Ich arbeite gerade an einem Projekt, bei dem PDFs nach einem erfolgreichen API-Aufruf, der das Passwort zurückgibt, entschlüsselt werden können. Ich habe durch SO und pdftron SDK durchgeblättert, kann aber keine definitive Lösung finden, wie man dieses Passwort in den Sicherheitshandler einfügt.Ein Passwort in den PDF-Sicherheitshandler übergeben

Dinge, die ich habe versucht:

Keiner der GetSecurityHandler() Methoden scheinen Passwort Einfügen zu handhaben:

SecurityHandler handler = m_PdfDocument.GetSecurityHandler(); 

einen String Passwort nimmt aber wirft Fehler:

m_PdfDocument.InitStdSecurityHandler(pwd); 

Fehler: Nachricht: Kein Standard-Sicherheitshandler. Der benutzerdefinierte Filter muss registriert werden.

Nach der Nachricht zu urteilen, nahm ich an, dass ich m_PdfDocument.InitSecurityHandler() stattdessen brauchte, aber diese Methode nimmt keine Zeichenkette, nur int.

Jeder kann mich auf die richtige Spur stoßen?

+0

Sind Sie in der Lage, das PDF in einem PDF-Reader zu öffnen, wie Foxit/Adobe? Passiert dies für eine passwortgeschützte Datei oder nur für bestimmte? Hast du die Datei verschlüsselt? Wie? – Ryan

+0

In einem anderen Reader heißt es, die Datei ist verschlüsselt. Die Dateien, die wir öffnen müssen, sind verschlüsselte Lerndateien. Sie werden von einer anderen Firma, mit der wir arbeiten, erstellt, sie bieten PDFs mit DRM-Schutz für Studenten mit Lernschwierigkeiten, unsere TTS-Software wird in der Lage sein, die Datei nach einem erfolgreichen Apikl zu entschlüsseln. Wenn der Anruf erfolgreich ist, wird das Passwort zurückgegeben. Alles ist Ordnung, ich muss nur das Passwort zur Entschlüsselung in das PDF schreiben. Der Benutzer kann das Passwort nicht kennen, ich muss das Passwort programmatisch weitergeben. –

+0

Auch: Die Verschlüsselung selbst wird mit pdftron entwickelt, aber von der Firma, mit der wir arbeiten, ausgelagert.Nach einigen Nachforschungen kamen wir zu dem Schluss, dass wir den benutzerdefinierten Sicherheitshandler mit einer ID initialisieren müssen (der Int muss übergeben werden), aber da sie ihn nicht programmiert haben, haben sie auch keine Ahnung ... –

Antwort

1

Danke die Datei für das Senden. Diese Datei wird mit benutzerdefinierter Verschlüsselung verschlüsselt. Ihr DRM. Kein PDF-Reader kann die Datei öffnen, sondern Ihren eigenen benutzerdefinierten PDF-Reader.

Um das PDF mit PDFNet zu öffnen, müssen Sie herausfinden, wie die Datei an erster Stelle verschlüsselt wurde, und im Wesentlichen das Gegenteil tun. Ich nehme an, dass das andere Team, das die Verschlüsselung durchgeführt hat, auch entschlüsselt hat, zumindest zu Testzwecken?

Es könnte so einfach wie das folgende Beispiel 3 in unserem Encryption sample. In diesem Fall müssen Sie sich nur unter dem Filternamen registrieren, den das andere Team verwendet hat. Ich denke, ich weiß, was das ist, aber werde hier nicht posten, und werde dir stattdessen eine E-Mail schicken.

Aber für andere, wenn die PDF-Datei mit einem Filter namens "Frodo" verschlüsselt wurde, dann wäre es

seine
CreateDelegate frodo_del = new CreateDelegate(FrodoSecurityHandler.Create); 
SecurityManagerSingleton.Instance().RegisterSecurityHandler("Frodo", new SecurityDescriptor("Frodo Security", frodo_del)); 
0

Nun nach this Seite wird GetSecurityHandler() verwendet, nachdem Sie einen anderen Handler zu initialisieren, so da InitSecurityHandler() ein int führt diese für die Programmierung

string password = "9quali52ty3"; 

    // Convert the string into a byte[]. 
    byte[] asciiBytes = Encoding.ASCII.GetBytes(password); 
    string compiledBytes = System.Text.Encoding.ASCII.GetString(asciiBytes); 
    int convertedBytes = int.Parse(compiledBytes); 
    m_PdfDocument.InitSecurityHandler(convertedBytes); 
    m_PdfDocument.GetSecurityHandler(); 

Eine gute Faustregel tun könnte: Es gibt immer eine Möglichkeit, von einem Datentyp zu einem anderen bekommen. Kredit an: @Brig Lamoreaux, @Zanoni und @Brandon auf den folgenden Seiten.
BrigZanoniBrandon

Verwandte Themen