/* ----------------------------------------------------------------- */ /// /// AssertPdf /// /// <summary> /// 生成された PDF が有効なものかどうかをチェックします。 /// </summary> /// /* ----------------------------------------------------------------- */ private void AssertPdf(CubePdf.UserSetting setting) { try { var password = !string.IsNullOrEmpty(setting.Permission.Password) ? setting.Permission.Password : !string.IsNullOrEmpty(setting.Password) ? setting.Password : string.Empty; using (var reader = new CubePdf.Editing.DocumentReader(setting.OutputPath, password)) { Assert.AreEqual(1, reader.Metadata.Version.Major); Assert.AreEqual(GetMinorVersion(setting.PDFVersion), reader.Metadata.Version.Minor); Assert.AreEqual(setting.Document.Title, reader.Metadata.Title); Assert.AreEqual(setting.Document.Author, reader.Metadata.Author); Assert.AreEqual(setting.Document.Subtitle, reader.Metadata.Subtitle); Assert.AreEqual(setting.Document.Keyword, reader.Metadata.Keywords); Assert.AreEqual(setting.Permission.Password, reader.Encryption.OwnerPassword); if (reader.Encryption.Method != Data.EncryptionMethod.Aes256) { // AES256 の場合、ユーザパスワードを取得できないのでスキップ Assert.AreEqual(setting.Password, reader.Encryption.UserPassword); } } } catch (Exception err) { Assert.Fail(err.ToString()); } }
/* ----------------------------------------------------------------- */ /// /// CreateDocumentReader /// /// <summary> /// DocumentReader オブジェクトを生成します。 /// </summary> /// /// <remarks> /// セキュリティ設定が行われている場合は、Permission.Password を /// 用いて復号を試みます。全ての試行に失敗した場合、例外が送出 /// されます。 /// </remarks> /// /* ----------------------------------------------------------------- */ private CubePdf.Editing.DocumentReader CreateDocumentReader(string path) { try { var dest = new CubePdf.Editing.DocumentReader(path); if (dest.EncryptionStatus != Data.EncryptionStatus.RestrictedAccess) { return(dest); } dest.Dispose(); throw new CubePdf.Data.EncryptionException(); } catch (CubePdf.Data.EncryptionException /* err */) { if (!string.IsNullOrEmpty(Permission.Password)) { try { return(new Editing.DocumentReader(path, Permission.Password)); } catch (CubePdf.Data.EncryptionException /* err */) { } } } throw new ArgumentException(Properties.Resources.EncryptionError); }
/* ----------------------------------------------------------------- */ /// /// CreateDocumentReader /// /// <summary> /// DocumentReader オブジェクトを生成します。 /// </summary> /// /// <remarks> /// セキュリティ設定が行われている場合は、Permission.Password を /// 用いて復号を試みます。全ての試行に失敗した場合、例外が送出 /// されます。 /// </remarks> /// /* ----------------------------------------------------------------- */ private CubePdf.Editing.DocumentReader CreateDocumentReader(string path) { try { var dest = new CubePdf.Editing.DocumentReader(path); if (dest.EncryptionStatus != Data.EncryptionStatus.RestrictedAccess) return dest; dest.Dispose(); throw new CubePdf.Data.EncryptionException(); } catch (CubePdf.Data.EncryptionException /* err */) { if (!string.IsNullOrEmpty(Permission.Password)) { try { return new Editing.DocumentReader(path, Permission.Password); } catch (CubePdf.Data.EncryptionException /* err */) { } } } throw new ArgumentException(Properties.Resources.EncryptionError); }