IsEncrypted() public method

public IsEncrypted ( ) : bool
return bool
示例#1
0
        /// <summary>
        /// 根据文件名进行分类
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns>0:正常,1:加密,2:异常</returns>
        public static int ClassifyByWjm(string fileDir, string fileName)
        {
            if (fileName == null || "".Equals(fileName)) return 2; //文件名为空,不存在全文

            //文件原来所在目录
            string fullFileName = fileDir;

            fullFileName += ConstructFilePath(fileName, 1);
            fullFileName += fileName;

            if (!File.Exists(fullFileName)) return 2; //有文件名,但是文件不存在

            if (File.ReadAllBytes(fullFileName).Length == 0) return 2; //文件大小为0

            try
            {
                PdfReader reader = new PdfReader(fullFileName);
                if (reader.IsEncrypted()) return 1; //文件加密
            }
            catch
            {
                return 2;//PDF文件损坏
            }

            //正常
            return 0;
        }
 // ---------------------------------------------------------------------------
 /**
  * Inspect a PDF file and write the info to a txt file
  * @param writer StringBuilder
  * @param pdf PDF file bytes
  * @param fileName PDF filename
  */
 public static void Inspect(StringBuilder sb, byte[] pdf, string fileName)
 {
     PdfReader reader = new PdfReader(pdf);
     sb.Append(fileName);
     sb.Append(Environment.NewLine);
     sb.Append("Number of pages: ");
     sb.Append(reader.NumberOfPages);
     sb.Append(Environment.NewLine);
     Rectangle mediabox = reader.GetPageSize(1);
     sb.Append("Size of page 1: [");
     sb.Append(mediabox.Left);
     sb.Append(',');
     sb.Append(mediabox.Bottom);
     sb.Append(',');
     sb.Append(mediabox.Right);
     sb.Append(',');
     sb.Append(mediabox.Top);
     sb.Append("]");
     sb.Append(Environment.NewLine);
     sb.Append("Rotation of page 1: ");
     sb.Append(reader.GetPageRotation(1));
     sb.Append(Environment.NewLine);
     sb.Append("Page size with rotation of page 1: ");
     sb.Append(reader.GetPageSizeWithRotation(1));
     sb.Append(Environment.NewLine);
     sb.Append("Is rebuilt? ");
     sb.Append(reader.IsRebuilt().ToString());
     sb.Append(Environment.NewLine);
     sb.Append("Is encrypted? ");
     sb.Append(reader.IsEncrypted().ToString());
     sb.Append(Environment.NewLine);
     sb.Append(Environment.NewLine);
 }
示例#3
0
        public static SourceTestResult TestSourceFile(string fileName)
        {
            try
            {
                PdfReader reader = new PdfReader(fileName);
                bool ok = !reader.IsEncrypted() ||
                    (reader.Permissions & PdfWriter.AllowAssembly) == PdfWriter.AllowAssembly;
                reader.Close();

                return ok ? SourceTestResult.Ok : SourceTestResult.Protected;
            }
            catch
            {
                return SourceTestResult.Unreadable;
            }
        }
示例#4
0
        /// <summary>
        /// Retrieves the following properties as <see cref="Dictionary&lt;String,String&gt;"/> key/value pairs:
        /// Page Count, Encrypted, Pdf Version, Rebuilt
        /// </summary>
        /// <param name="filename">The PDF file</param>
        /// <returns>A <see cref="Dictionary&lt;String, String&gt;"/> object</returns>
        /// <exception cref="ArgumentNullException"></exception>
        /// <remarks></remarks>
        public Dictionary <String, String> RetrieveBasicProperties(String filename)
        {
            Dictionary <String, String> basicProperties = new Dictionary <string, string>();

            if (!String.IsNullOrEmpty(filename) && !String.IsNullOrWhiteSpace(filename))
            {
                var documentReader = new iTextSharpPDF.PdfReader(new iTextSharpPDF.RandomAccessFileOrArray(filename), null);
                basicProperties.Add("Page Count", documentReader.NumberOfPages.ToString());
                basicProperties.Add("Encrypted", documentReader.IsEncrypted().ToString());
                basicProperties.Add("Pdf Version", documentReader.PdfVersion.ToString());
                basicProperties.Add("Rebuilt", documentReader.IsRebuilt().ToString());
                documentReader.Close();
            }
            else
            {
                throw new ArgumentNullException("filename", exceptionArgumentNullOrEmptyString);
            }
            return(basicProperties);
        }
示例#5
0
 public static void Test_ReadPdf_01(string file)
 {
     PdfReader reader = null;
     try
     {
         reader = new PdfReader(file);
         Trace.WriteLine("read pdf                          : \"{0}\"", file);
         Trace.WriteLine("number of pages                   : {0}", reader.NumberOfPages);
         Rectangle mediabox = reader.GetPageSize(1);
         Trace.WriteLine("size of page 1                    : [ {0}, {1}, {2}, {3} ]", mediabox.Left, mediabox.Bottom, mediabox.Right, mediabox.Top);
         Trace.WriteLine("rotation of page 1                : {0}", reader.GetPageRotation(1));
         Trace.WriteLine("page size with rotation of page 1 : {0}", reader.GetPageSizeWithRotation(1));
         Trace.WriteLine("file length                       : {0}", reader.FileLength);
         Trace.WriteLine("is rebuilt ?                      : {0}", reader.IsRebuilt());
         Trace.WriteLine("is encrypted ?                    : {0}", reader.IsEncrypted());
     }
     finally
     {
         if (reader != null)
             reader.Close();
     }
 }
示例#6
0
        /** Creates new PdfStamperImp.
        * @param reader the read PDF
        * @param os the output destination
        * @param pdfVersion the new pdf version or '\0' to keep the same version as the original
        * document
        * @param append
        * @throws DocumentException on error
        * @throws IOException
        */
        internal protected PdfStamperImp(PdfReader reader, Stream os, char pdfVersion, bool append) : base(new PdfDocument(), os) {
            if (!reader.IsOpenedWithFullPermissions)
                throw new BadPasswordException(MessageLocalization.GetComposedMessage("pdfreader.not.opened.with.owner.password"));
            if (reader.Tampered)
                throw new DocumentException(MessageLocalization.GetComposedMessage("the.original.document.was.reused.read.it.again.from.file"));
            reader.Tampered = true;
            this.reader = reader;
            file = reader.SafeFile;
            this.append = append;
            if (reader.IsEncrypted() && (append || PdfReader.unethicalreading)) {
                crypto = new PdfEncryption(reader.Decrypt);
            }
            if (append) {
                if (reader.IsRebuilt())
                    throw new DocumentException(MessageLocalization.GetComposedMessage("append.mode.requires.a.document.without.errors.even.if.recovery.was.possible"));
                pdf_version.SetAppendmode(true);
                if (pdfVersion == 0) {
                    pdf_version.PdfVersion = reader.PdfVersion;
                }
                else {
                    pdf_version.PdfVersion = pdfVersion;
                }
                byte[] buf = new byte[8192];
                int n;
                while ((n = file.Read(buf)) > 0)
                    this.os.Write(buf, 0, n);
                prevxref = reader.LastXref;
                reader.Appendable = true;
            }
            else {
                if (pdfVersion == 0)
                    base.PdfVersion = reader.PdfVersion;
                else
                    base.PdfVersion = pdfVersion;
            }

            if (reader.IsTagged()) {
                this.SetTagged();
            }

            base.Open();
            pdf.AddWriter(this);
            if (append) {
                body.Refnum = reader.XrefSize;
                marked = new IntHashtable();
                if (reader.IsNewXrefType())
                    fullCompression = true;
                if (reader.IsHybridXref())
                    fullCompression = false;
            }
            initialXrefSize = reader.XrefSize;
            ReadColorProfile();
        }
示例#7
0
 /** Creates new PdfStamperImp.
 * @param reader the read PDF
 * @param os the output destination
 * @param pdfVersion the new pdf version or '\0' to keep the same version as the original
 * document
 * @param append
 * @throws DocumentException on error
 * @throws IOException
 */
 internal PdfStamperImp(PdfReader reader, Stream os, char pdfVersion, bool append)
     : base(new PdfDocument(), os)
 {
     if (reader.Tampered)
         throw new DocumentException("The original document was reused. Read it again from file.");
     reader.Tampered = true;
     this.reader = reader;
     file = reader.SafeFile;
     this.append = append;
     if (append) {
         if (reader.IsRebuilt())
             throw new DocumentException("Append mode requires a document without errors even if recovery was possible.");
         if (reader.IsEncrypted())
             crypto = new PdfEncryption(reader.Decrypt);
         pdf_version.SetAppendmode(true);
         file.ReOpen();
         byte[] buf = new byte[8192];
         int n;
         while ((n = file.Read(buf)) > 0)
             this.os.Write(buf, 0, n);
         file.Close();
         prevxref = reader.LastXref;
         reader.Appendable = true;
     }
     else {
         if (pdfVersion == 0)
             base.PdfVersion = reader.PdfVersion;
         else
             base.PdfVersion = pdfVersion;
     }
     base.Open();
     pdf.AddWriter(this);
     if (append) {
         body.Refnum = reader.XrefSize;
         marked = new IntHashtable();
         if (reader.IsNewXrefType())
             fullCompression = true;
         if (reader.IsHybridXref())
             fullCompression = false;
     }
     initialXrefSize = reader.XrefSize;
 }
示例#8
0
        private Boolean lockPDF(String r_password, String w_password)
        {
            string rp = null, wp = null;

            ////////////////////////////////////////////////////
            // PDF施錠
            ////////////////////////////////////////////////////
            if (avaPDF)
            {
                // 一時ファイル取得
                String tmpFilePath = Path.GetTempFileName();

                // パスワードなしで読み込み可能かチェック
                try {
                    pdfReader = new PdfReader(dataGridView1.Rows[0].Cells[3].Value.ToString());
                } catch {
                    label2.Text = WindowsFormsApplication1.Properties.Resources.pdf1;
                    // "This document has been password-protected.";
                    return(false);
                }
                // オーナーパスワードが掛っているかチェック
                if (pdfReader.IsEncrypted())
                {
                    label2.Text = WindowsFormsApplication1.Properties.Resources.pdf2;
                    // "This document has been password-protected.";
                    return(false);
                }
                pdfDoc  = new iTextSharp.text.Document(pdfReader.GetPageSize(1));
                os      = new FileStream(tmpFilePath, FileMode.OpenOrCreate);
                pdfCopy = new PdfCopy(pdfDoc, os);
                // 出力ファイルにパスワード設定
                // rp:ユーザーパスワード
                // wp:オーナーパスワード(空の場合はユーザーパスワードと同じ値を設定)

                pdfCopy.Open();
                if (r_password.Length == 0)
                {
                    rp = null;
                }
                else
                {
                    rp = r_password;
                }
                if (w_password.Length == 0)
                {
                    wp = r_password;
                    pdfCopy.SetEncryption(
                        PdfCopy.STRENGTH128BITS, rp, wp,
                        PdfCopy.markAll);
                }
                else
                {
                    wp = w_password;
                    // AllowPrinting    印刷
                    // AllowCopy    内容のコピーと抽出
                    // AllowModifyContents  文書の変更
                    // AllowModifyAnnotations   注釈の入力
                    // AllowFillIn  フォーム・フィールドの入力と署名
                    // AllowScreenReaders   アクセシビリティのための内容抽出
                    // AllowAssembly    文書アセンブリ
                    pdfCopy.SetEncryption(
                        PdfCopy.STRENGTH128BITS, rp, wp,
                        PdfCopy.AllowScreenReaders | PdfCopy.AllowPrinting);
                }

                try {
                    // 出力ファイルDocumentを開く
                    pdfDoc.Open();
                    // アップロードPDFファイルの内容を出力ファイルに書き込む
                    pdfCopy.AddDocument(pdfReader);
                    // 出力ファイルDocumentを閉じる
                    pdfDoc.Close();
                    pdfCopy.Close();
                    os.Close();
                    pdfReader.Close();
                    // オリジナルファイルと一時ファイルを置き換える
                    File.Delete(dataGridView1.Rows[0].Cells[3].Value.ToString());
                    File.Move(tmpFilePath, dataGridView1.Rows[0].Cells[3].Value.ToString());
                } catch (Exception eX) {
                    label2.Text = WindowsFormsApplication1.Properties.Resources.error1 + eX.Message;
                    // "Saving failed." + eX.Message;
                    return(false);
                }
            }
            return(true);
        }
示例#9
0
        private Boolean unlockPDF(String r_password, String w_password)
        {
            Boolean NOPASS = true;

            ////////////////////////////////////////////////////
            // PDF解錠
            ////////////////////////////////////////////////////
            if (avaPDF)
            {
                // 一時ファイル取得
                String  tmpFilePath = Path.GetTempFileName();
                Boolean isRP        = false;
                Boolean isWP        = false;

                // パスワードなしで読み込めるかチェック
                try {
                    pdfReader = new PdfReader(dataGridView1.Rows[0].Cells[3].Value.ToString());
                    isRP      = false; // ユーザーパスワードなし
                                       // オーナーパスワードが掛っているかチェック
                    isWP   = (pdfReader.IsEncrypted()) ? true : false;
                    NOPASS = !(isRP || isWP);
                    pdfReader.Close();
                    pdfReader.Dispose();
                } catch {
                    isRP   = true;
                    NOPASS = false;
                }
                if (NOPASS)
                {
                    // パスワードがかかっていない
                    label2.Text = WindowsFormsApplication1.Properties.Resources.pdf2;
                    //"This document is not applied password.";
                    pdfReader.Close();
                    pdfReader.Dispose();
                    return(false);
                }
                if (isRP && (r_password.Length == 0))
                {
                    // ユーザーパスワードが掛っているが、入力されていない
                    label2.Text = WindowsFormsApplication1.Properties.Resources.pdf3;
                    // "This document has been user password-protected.";
                    return(false);
                }
                if (isWP && (w_password.Length == 0))
                {
                    // オーナーパスワードが掛っているが、入力されていない
                    label2.Text = WindowsFormsApplication1.Properties.Resources.pdf4;
                    //"This document has been owner password-protected.";
                    return(false);
                }

                String rp = (r_password.Length == 0) ? null : r_password;
                String wp = (w_password.Length == 0) ? r_password : w_password;

                try {
                    pdfReader = new PdfReader(dataGridView1.Rows[0].Cells[3].Value.ToString(), (byte[])System.Text.Encoding.ASCII.GetBytes(wp));
                } catch {
                    label2.Text = WindowsFormsApplication1.Properties.Resources.message2;
                    // "Password is incorrect.";
                    return(false);
                }


                try {
                    pdfDoc  = new iTextSharp.text.Document(pdfReader.GetPageSize(1));
                    os      = new FileStream(tmpFilePath, FileMode.OpenOrCreate);
                    pdfCopy = new PdfCopy(pdfDoc, os);
                    pdfCopy.Open();

                    pdfDoc.Open();
                    pdfCopy.AddDocument(pdfReader);

                    pdfDoc.Close();
                    pdfCopy.Close();
                    pdfReader.Close();
                    pdfReader.Dispose();
                    // オリジナルファイルと一時ファイルを置き換える
                    System.IO.File.Copy(tmpFilePath, dataGridView1.Rows[0].Cells[3].Value.ToString(), true);
                    System.IO.File.Delete(tmpFilePath);
                } catch (Exception eX) {
                    label2.Text = WindowsFormsApplication1.Properties.Resources.error1 + eX.Message;
                    // "Saving failed." + eX.Message;
                    return(false);
                }
            }
            return(true);
        }
示例#10
0
 /// <summary>
 /// Retrieves the following properties as <see cref="Dictionary&lt;String,String&gt;"/> key/value pairs:
 /// Page Count, Encrypted, Pdf Version, Rebuilt
 /// </summary>
 /// <param name="filename">The PDF file</param>
 /// <returns>A <see cref="Dictionary&lt;String, String&gt;"/> object</returns>
 /// <exception cref="ArgumentNullException"></exception>
 /// <remarks></remarks>
 public Dictionary<String, String> RetrieveBasicProperties(String filename)
 {
     Dictionary<String, String> basicProperties = new Dictionary<string, string>();
     if (!String.IsNullOrEmpty(filename) && !String.IsNullOrWhiteSpace(filename))
     {
         var documentReader = new iTextSharpPDF.PdfReader(new iTextSharpPDF.RandomAccessFileOrArray(filename), null);
         basicProperties.Add("Page Count", documentReader.NumberOfPages.ToString());
         basicProperties.Add("Encrypted", documentReader.IsEncrypted().ToString());
         basicProperties.Add("Pdf Version", documentReader.PdfVersion.ToString());
         basicProperties.Add("Rebuilt", documentReader.IsRebuilt().ToString());
         documentReader.Close();
     }
     else
     {
         throw new ArgumentNullException("filename", exceptionArgumentNullOrEmptyString);
     }
     return basicProperties;
 }
示例#11
0
        private void pocketmodstyle()
        {
            PdfReader pr = new PdfReader(ofd.FileName);
            if (pr.IsEncrypted())
            {
                MessageBox.Show(ofd.FileName + " is protected.",
                    "Error",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error);
                return;
            }

            try
            {

                var dst = PageSize.GetRectangle(comboBox1.SelectedItem.ToString());
                var doc = new Document(dst);
                var pw = PdfWriter.GetInstance(doc, new FileStream(sfd.FileName, FileMode.Create));
                doc.Open();

                for (var page = 1; page <= pr.NumberOfPages; page++)
                {
                    if (page % 8 == 1) doc.NewPage();

                    var pcb = pw.DirectContent;
                    var src = pr.GetPageSize(page);
                    int rot = pr.GetPageRotation(page);

                    bool isLandscape = (src.Width > src.Height) ? true : false;
                    float scale;
                    float offset;
                    if (isLandscape)
                    {
                        scale = dst.Height / (src.Height * 4);
                        offset = (dst.Width / 2 - (scale * src.Width)) / 2;
                    }
                    else
                    {
                        scale = dst.Height / (src.Width * 4);
                        offset = (dst.Width / 2 - (scale * src.Height)) / 2;
                    }

                    // For scaling and rotation
                    var transRotate = new iTextSharp.awt.geom.AffineTransform();
                    transRotate.SetToIdentity();
                    transRotate.Scale(scale, scale);

                    // For position
                    var transAdjust = new iTextSharp.awt.geom.AffineTransform();
                    transAdjust.SetToIdentity();

                    // Affine translation of PocketMod style.
                    if (isLandscape || (rot == 90 || rot == 270))
                    {
                        var px = dst.Width / 2;
                        var py = dst.Height / 4;
                        var rads = 180 * Math.PI / 180;

                        switch (page % 8)
                        {
                            // LEFT SIDE
                            // Rotate 180 degrees
                            case 1:
                                transAdjust.Translate(px - offset, py * 4);
                                transRotate.Rotate(-rads);
                                break;
                            case 0: // as 8
                                transAdjust.Translate(px - offset, py * 3);
                                transRotate.Rotate(-rads);
                                break;
                            case 7:
                                transAdjust.Translate(px - offset, py * 2);
                                transRotate.Rotate(-rads);
                                break;
                            case 6:
                                transAdjust.Translate(px - offset, py);
                                transRotate.Rotate(-rads);
                                break;

                            // RIGHT SIDE
                            // no rotation
                            case 2:
                                transAdjust.Translate(px + offset, py * 3);
                                break;
                            case 3:
                                transAdjust.Translate(px + offset, py * 2);
                                break;
                            case 4:
                                transAdjust.Translate(px + offset, py);
                                break;
                            case 5:
                                transAdjust.Translate(px + offset, 0);
                                break;
                        }

                    }
                    else
                    {
                        var px = dst.Width / 2;
                        var py = dst.Height / 4;
                        var rads = 90 * Math.PI / 180;

                        switch (page % 8)
                        {
                            // LEFT SIDE
                            // Rotate counterclockwise 90 degrees
                            case 1:
                                transAdjust.Translate(px - offset, py * 3);
                                transRotate.Rotate(rads);
                                break;
                            case 0: // as 8
                                transAdjust.Translate(px - offset, py * 2);
                                transRotate.Rotate(rads);
                                break;
                            case 7:
                                transAdjust.Translate(px - offset, py);
                                transRotate.Rotate(rads);
                                break;
                            case 6:
                                transAdjust.Translate(px - offset, 0);
                                transRotate.Rotate(rads);
                                break;

                            // RIGHT SIDE
                            // Rotate clockwise 90 degrees
                            case 2:
                                transAdjust.Translate(px + offset, py * 4);
                                transRotate.Rotate(-rads);
                                break;
                            case 3:
                                transAdjust.Translate(px + offset, py * 3);
                                transRotate.Rotate(-rads);
                                break;
                            case 4:
                                transAdjust.Translate(px + offset, py * 2);
                                transRotate.Rotate(-rads);
                                break;
                            case 5:
                                transAdjust.Translate(px + offset, py);
                                transRotate.Rotate(-rads);
                                break;
                        }

                    }
                    var finalTrans = new iTextSharp.awt.geom.AffineTransform();
                    finalTrans.SetToIdentity();
                    finalTrans.Concatenate(transAdjust);
                    finalTrans.Concatenate(transRotate);

                    var importedPage = pw.GetImportedPage(pr, page);
                    pcb.AddTemplate(importedPage, finalTrans);

                    if ((page % 8 == 0)||(page == pr.NumberOfPages))
                    {
                        // Draw guide line for folding.
                        pcb.SetLineWidth(0.01f);

                        // Outside frame
                        if (checkBox1.Checked)
                        {
                            pcb.MoveTo(0f, 0f);
                            pcb.LineTo(dst.Width, 0f);
                            pcb.LineTo(dst.Width, dst.Height);
                            pcb.LineTo(0f, dst.Height);
                            pcb.LineTo(0f, 0f);
                            pcb.Stroke();
                        }

                        pcb.MoveTo(0f, dst.Height * 3 / 4f);
                        pcb.LineTo(dst.Width, dst.Height * 3 / 4);
                        pcb.Stroke();

                        pcb.MoveTo(0f, dst.Height * 2 / 4f);
                        pcb.LineTo(dst.Width, dst.Height * 2 / 4);
                        pcb.Stroke();

                        pcb.MoveTo(0f, dst.Height * 1 / 4f);
                        pcb.LineTo(dst.Width, dst.Height * 1 / 4);
                        pcb.Stroke();

                        pcb.MoveTo(dst.Width / 2, 0f);
                        pcb.LineTo(dst.Width / 2, dst.Height * 1 / 4);
                        pcb.Stroke();

                        pcb.MoveTo(dst.Width / 2, dst.Height * 3 / 4);
                        pcb.LineTo(dst.Width / 2, dst.Height);
                        pcb.Stroke();

                        pcb.SetLineDash(3f, 3f);
                        pcb.MoveTo(dst.Width / 2, dst.Height * 1 / 4);
                        pcb.LineTo(dst.Width / 2, dst.Height * 3 / 4);
                        pcb.Stroke();

                        pcb.SetLineDash(0);
                    }

                }

                doc.Close();
                pw.Close();
                pr.Close();

            }
            catch (Exception e)
            {
                Console.WriteLine("{0} Exception caught.", e);
            }
        }