0

Ich versuche, eine passwortgeschützte PDF-Datei mit JasperReports und Java zu generieren.Passwortgeschützte PDF Jaspersoft

-Code lautet wie folgt:

jrPdfExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, path.concat(filename).concat(".pdf")); 
jrPdfExporter.setParameter(JRExporterParameter.JASPER_PRINT, jprint); 
jrPdfExporter.setParameter(JRPdfExporterParameter.OWNER_PASSWORD, "Bancosol123"); 
jrPdfExporter.setParameter(JRPdfExporterParameter.USER_PASSWORD, "Bancosol123"); 
jrPdfExporter.setParameter(JRPdfExporterParameter.IS_ENCRYPTED, Boolean.TRUE); 
jrPdfExporter.exportReport(); 

Ich war mit iText 2.1.7 den PDF zu erzeugen, es funktioniert gut, aber wenn ich das Passwort Teil enthalten ist, habe ich den Fehler

Caused by: java.lang.ClassNotFoundException: org.bouncycastle.asn1.DEREncodable

I umfasste die folgenden zwei Gläser:

  • bcprov-jdk15on-1.47.jar
  • bcmail-jdk15on-1.47.jar

Aber das Problem wurde immer noch nicht gelöst. Ich habe irgendwo gelesen, könnte es mit iText 2.1.7

So ein Kompatibilitätsproblem sein entfernte ich iText 2.1.7 und 5.3.2 enthalten iText

Jetzt habe ich folgende Fehlermeldung

exception in thread "awt-eventqueue-0" java.lang.noclassdeffounderror: com/lowagie/text/documentexception

+0

Warum iText 5.3.2 und nicht iText 5.5.12? –

+0

'java.lang.noclassdeffounderror: com/lowagie/text/documetexception': das ist zu erwarten. Sie müssen 'com.lowagie' durch' com.itextpdf' in allen Importanweisungen ersetzen. –

+0

_Ich habe irgendwo gelesen - wo hast du das gelesen? Bearbeiten Sie Ihren Beitrag und fügen Sie den Link hinzu. –

Antwort

1

PDF Jasper Generation basiert auf iText 2.1.7 (zumindest aktuelle Versionen, es gab einige JR-Versionen, die eine 5.x-Version verwendeten, aber aus irgendeinem Grund wurde diese Änderung rückgängig gemacht), tatsächlich sogar eine leicht gepatchte Variante davon.

Daher werden Sie höchstwahrscheinlich weiterhin eine vor 5.0.0 Version von iText verwenden möchten.

Jetzt sollten Sie beachten, dass diese alten iText-Versionen gegen eine gleich alte BouncyCastle-Version programmiert sind: Die Maven-Abhängigkeitsinformationen in der JR iText 2.1.7-Variante weisen auf die Verwendung von BouncyCastle 1.38 hin.

Dies erklärt auch die ursprüngliche Fehlermeldung, gibt es wesentliche Änderungen zwischen BC 1.38 und 1.47, insbesondere Version 1.47 selbst war eine wesentliche Änderung der BC API.

Sie sollten also mit älteren BC-Versionen versuchen, vorzugsweise 1.38.