←Select platform

DecryptPassword Event

Summary

Event used to provide the password for loading encrypted files.

Syntax

C#
C++/CLI
Python
public event EventHandler<CodecsDecryptPasswordEventArgs> DecryptPassword 
public:  
   event EventHandler<CodecsDecryptPasswordEventArgs^>^ DecryptPassword 
def DecryptPassword(sender,e): # sender: RasterCodecs e: CodecsDecryptPasswordEventArgs 

Event Data

Parameter Type Description
sender object The source of the event
e CodecsDecryptPasswordEventArgs The event data

Remarks

You need to provide a password for loading or retrieving information about encrypted files.

If you register a DecryptPassword event handler, RasterCodecs automatically fires the DecryptPassword event when attempting to load or to get information about an encrypted file. The operation can only succeed when setting the CodecsDecryptPasswordEventArgs.Password property in the event handler to the correct password.

Another way to provide the password is to set the RasterCodecs.CodecsLoadOptions.Decrypt.Password property beforehand. If the RasterCodecs.CodecsLoadOptions.Decrypt.Password property is set to the correct password, the DecryptPassword event will not fire. In other words, the DecryptPassword event is fired only if RasterCodecs.CodecsLoadOptions.Decrypt.Password is incorrect.

For PDF files, the DecryptPassword event is fired if both RasterCodecs.CodecsLoadOptions.Decrypt.Password and RasterCodecs.Load.Pdf.Password are incorrect.

A typical event handler will bring up a message box containing an edit box and a label with a message: "File XXX is encrypted. Please provide the password for opening this file". The event handler then return the password provided to LEADTOOLS using the CodecsDecryptPasswordEventArgs parameter. The name of the file that triggered the event is in the CodecsDecryptPasswordEventArgs.FileName property.

If the password supplied in DecryptPassword is incorrect, the event handler will be called again until:

1) The event handler returns the correct password.

or

2) The event handler aborts the operation gracefully by setting the CodecsDecryptPasswordEventArgs.Cancel property to true.

or

3) The event handler returns the same incorrect password twice in a row for the same file (the operation is aborted in this case to avoid a possible infinite loop).

If the current operation is cancelled by setting CodecsDecryptPasswordEventArgs.Cancel to true, RasterCodecs Class gracefully cancels the operation without firing an exception and GetInformation, Load/LoadSvg return as follows:

In other words, the application should not rely on the exception mechanism and check the returned object as described above to detect whether the user aborted the operation.

You should be very careful to avoid going into an infinite loop. For example, if you always return the same password from this event and the password is incorrect, the app will lock up because the event will keep getting fired.

Example
C#
Java
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Svg; 
 
 
private static void DecryptPasswordExample() 
{ 
 
   /* This example loads an encrypted file using the Decrypt password event */ 
   using (RasterCodecs codecs = new RasterCodecs()) 
   { 
      string srcFile = @"Encrypted.docx"; 
 
      // Create a DecryptPassword handler  
      EventHandler<CodecsDecryptPasswordEventArgs> decryptPasswordHandler = (sender, e) => 
      { 
         /* You can also bring up a message box informing the user that the 'e.FileName' file is encrypted and needs a password */ 
         e.Password = "MyPassword"; 
         /* Or you can set 'e.Cancel = true' to cancel the load */ 
      }; 
 
      // Install the DecryptPassword event handler 
      codecs.DecryptPassword += decryptPasswordHandler; 
 
      codecs.Options.Load.AllPages = true; 
 
      using (RasterImage image = codecs.Load(srcFile)) 
      { 
         /* check that the image is not null to make sure the operation was not cancelled */ 
         if (image != null) 
            codecs.Save(image, srcFile + ".tif", RasterImageFormat.TifLzw, 0); 
      } 
   } 
} 
 
import java.io.*; 
import java.net.*; 
import java.nio.file.Paths; 
import java.util.*; 
import java.time.Instant; 
import java.time.Duration; 
 
import org.junit.*; 
import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 
import static org.junit.Assert.*; 
 
import leadtools.*; 
import leadtools.codecs.*; 
import leadtools.codecs.RasterCodecs.FeedCallbackThunk; 
import leadtools.drawing.internal.*; 
import leadtools.imageprocessing.*; 
import leadtools.imageprocessing.color.ChangeIntensityCommand; 
import leadtools.svg.*; 
 
 
public void decryptPasswordExample() { 
   // This example loads an encrypted file using the Decrypt password event // 
   final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images"; 
   String srcFile = combine(LEAD_VARS_IMAGES_DIR, "Encrypted.pdf"); 
   RasterCodecs codecs = new RasterCodecs(); 
 
   // Install the DecryptPassword event handler 
   codecs.addDecryptPasswordListener(decryptPasswordHandler); 
 
   codecs.getOptions().getLoad().setAllPages(true); 
 
   RasterImage image = codecs.load(srcFile); 
   // check that the image is not null to make sure the operation was not cancelled 
   // // 
   if (image != null) 
      codecs.save(image, srcFile + ".tif", RasterImageFormat.TIFLZW, 0); 
} 
 
// Create a DecryptPassword handler 
CodecsDecryptPasswordListener decryptPasswordHandler = new CodecsDecryptPasswordListener() { 
 
   @Override 
   public void onDecryptPassword(CodecsDecryptPasswordEvent e) { 
      // You can also bring up a message box informing the user that the 'e.FileName' 
      // file is encrypted and needs a password // 
      e.setPassword("MyPassword"); 
      // Or you can set 'e.Cancel = true' to cancel the load // 
 
   } 
 
}; 

Requirements

Target Platforms

See Also

CodecsDecryptPasswordEventArgs class

RasterCodecs.CodecsLoadOptions.Decrypt.Password property

RasterCodecs.Load.Pdf.Password property

RasterCodecs Class

RasterCodecs Members

Leadtools.Codecs Namespace

CodecsImageInfo.Format

CodecsImageInfo class

GetInformation method

ISvgDocument

RasterCodecs.Load method

RasterCodecs.LoadImage method

RasterCodecs.LoadSvg method

RasterImage class

RasterImageFormat.Unknown

Help Version 23.0.2024.2.29
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Codecs Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.