L'ouverture de mot de passe protégé fichier pdf avec iTextSharp

Je suis en train de faire une application qui devrait afficher des Pdf avec mot de passe. C'est mon code:

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
try
{
string filePath = Request.QueryString["filePath"];
if (filePath.ToUpper().EndsWith("PDF"))
{
copyPDF(filePath);
}
}
catch
{
string message = "<script language='Javascript'>alert('File Not Found! Call Records Department for verification. ')</script>";
ScriptManager.RegisterStartupScript(Page, this.GetType(), message, message, false);
}
}
}
public void copyPDF(string filePath)
{
iTextSharp.text.pdf.RandomAccessFileOrArray ra = new iTextSharp.text.pdf.RandomAccessFileOrArray(Server.MapPath(ResolveUrl(filePath)));
if (ra != null)
{
System.IO.MemoryStream ms = new System.IO.MemoryStream();
byte[] password = System.Text.ASCIIEncoding.ASCII.GetBytes("Secretinfo");
iTextSharp.text.pdf.PdfReader thepdfReader = new iTextSharp.text.pdf.PdfReader(ra, password);
int pages = thepdfReader.NumberOfPages;
iTextSharp.text.Document pdfDoc = new iTextSharp.text.Document();
iTextSharp.text.pdf.PdfCopy pdfCopy = new iTextSharp.text.pdf.PdfCopy(pdfDoc, ms);
pdfDoc.Open();
int i = 0;
while (i < pages)
{
pdfCopy.AddPage(pdfCopy.GetImportedPage(thepdfReader, i + 1));
i += 1;
}
pdfDoc.Close();
Byte[] byteInfo = ms.ToArray();
Response.Clear();
Response.ContentType = "application/pdf";
Response.AddHeader("content-length", byteInfo.Length.ToString());
Response.BinaryWrite(byteInfo);
Response.Flush();
Response.End();
}
}

Mon code n'a pas de problème d'ouverture des fichiers pdf sans mot de passe mais il ne peut pas ouvrir les fichiers pdf avec un mot de passe, même si le mot de passe est fourni. L'application exécute la capture à la place. Ce qui semble être le problème avec mon code?

MODIFIER:
J'ai enlevé le Attraper de voir l'exception levée.

Détails De L'Exception: Système.ArgumentException: PdfReader pas ouvert avec propriétaire du mot de passe

Il dit que la source de l'erreur est à la Ligne 51.

Line 49:    while (i < pages)
Line 50:    {
Line 51:         pdfCopy.AddPage(pdfCopy.GetImportedPage(thepdfReader, i + 1));
Line 52:         i += 1;
Line 53:    }
Qui exception est levée?
Il ne jette pas une exception. Il exécute l'instruction catch qui dans ce cas est une fenêtre qui dit " Fichier Non Trouvé! Appelez le Service des archives à des fins de vérification.'
hey @mkl j'ai enlevé la prise pour savoir quel type d'exception est levée, Il est dit Système.ArgumentException: PdfReader pas ouvert avec propriétaire du mot de passe.
Il semble que vous n'avez pas fourni le mot de passe correct.
Peut-être que le fichier PDF à la fois l'utilisateur et d'un mot de passe de propriétaire et que vous avez fourni le mot de passe utilisateur.

OriginalL'auteur Artemis | 2013-07-16