ドキュメントのセキュリティは、重要なデータやプライベートなデータが Word ドキュメントに含まれている場合に特に重要です。Word ドキュメントには、パスワード保護、読み取り専用モード、編集制限、部分的な保護など、ドキュメントを保護するために使用できるセキュリティ オプションがいくつか用意されています。一方、保護が不要になった場合、作業効率を上げるために、Word ドキュメントの保護を解除する必要がある場合があります。
この記事では、Spire.Doc for C++ を使用して Word ドキュメントを保護または保護解除する方法について紹介します。
- Word ドキュメントをパスワードで保護する
- Word ドキュメントの編集を制限する
- Word ドキュメントのセクションを保護する
- Word ドキュメントに編集可能な領域を作成する
- Word ドキュメントから編集可能な領域を削除する
- Word ドキュメントから制限を解除する
- Word ドキュメントからパスワードを削除する
Spire.Doc for C++ をインストールします
Spire.Doc for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。
Spire.Doc for C++ を C++ アプリケーションに統合する方法
Word ドキュメントをパスワードで保護する
ドキュメントをパスワードで暗号化することで、自分と特定の人だけがそのドキュメントを読んだり編集したりできるようにすることができます。以下は、Spire.Doc for C++ を使用して、Word ドキュメントをパスワードで保護する手順です。
- Document のオブジェクトを作成します。
- Document->LoadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
- Document->Eencrypt(LPCWSTR_S password) メソッドを使用して、ドキュメントをパスワード付きで暗号化します。
- Document->SaveToFile() メソッドを使用して、ドキュメントを保存します。
- C++
#include "Spire.Doc.o.h";
using namespace Spire::Doc;
using namespace std;
int main() {
//Document のオブジェクトを作成する
Document* document = new Document();
//Wordファイルを読み込む
document->LoadFromFile(L"C:\\予定外.docx");
//パスワードでドキュメントを暗号化する
document->Encrypt(L"password");
//ドキュメントを保存する
document->SaveToFile(L"Output/暗号化.docx", FileFormat::Docx2013);
document->Close();
delete document;
}
Word ドキュメントの編集を制限する
ドキュメントを読む許可は与えるが、その人ができる変更の種類を制限したい場合、特定の保護タイプと許可パスワードでドキュメントを保護することができます。
保護の種類 | 説明 |
AllowOnlyComments | ドキュメント内のコメントの修正は可能です。 |
AllowOnlyFormFields | ドキュメント内のフォームフィールドへのデータ入力のみが許可されます。 |
AllowOnlyReading | ドキュメントは読み取り専用です。 |
AllowOnlyRevisions | ドキュメントに変更マークを追加することのみが許可されます。 |
NoProtection | ドキュメントは保護されていません。 |
Spire.Doc for C++ を使用して、Word ドキュメントの編集を制限する手順を以下に示します。
- Document のオブジェクトを作成します。
- Document->LoadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
- Document->Protect(Spire::Doc::ProtectionType type, LPCWSTR_S password) メソッドを使用して、保護種類と許可パスワードを指定してドキュメントを保護します。
- Document->SaveToFile() メソッドを使用して、ドキュメントを保存します。
- C++
#include "Spire.Doc.o.h";
using namespace Spire::Doc;
using namespace std;
int main() {
//Document のオブジェクトを作成する
Document* document = new Document();
//Wordファイルを読み込む
document->LoadFromFile(L"C:\\予定外.docx");
//保護種類とパスワードを指定してドキュメントを保護する
document->Protect(ProtectionType::AllowOnlyReading, L"permission-psd");
//ドキュメントを保存する
document->SaveToFile(L"Output/編集の制限.docx", FileFormat::Docx2013);
document->Close();
delete document;
}
Word ドキュメントのセクションを保護する
Word ドキュメントでは、一部のセクションをロックし、残りのセクションを編集可能な状態にすることができます。以下は、Spire.Doc for C++ を使用して、Word ドキュメントの選択したセクションを保護する手順です。
- Document のオブジェクトを作成します。
- Document->LoadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
- Document->Protect() メソッドを使用して、保護種類を AllowOnlyFormFields に設定します。
- Section->SetProtectForm() メソッドの引数にfalseを渡すことで、特定のセクションの保護を解除します。他のセクションは、保護が維持されます。
- Document->SaveToFile() メソッドを使用してドキュメントを保存します。
- C++
#include "Spire.Doc.o.h";
using namespace Spire::Doc;
using namespace std;
int main() {
//Documentのオブジェクトを作成する
Document* document = new Document();
//Wordファイルを読み込む
document->LoadFromFile(L"C:\\予定外.docx");
//保護種類を"AllowOnlyFormFields "に設定する
document->Protect(ProtectionType::AllowOnlyFormFields, L"permission-psd");
//セクション2を保護解除する
document->GetSections()->GetItem(1)->SetProtectForm(false);
//ドキュメントを保存する
document->SaveToFile(L"Output/セクションの保護.docx", FileFormat::Docx2013);
document->Close();
delete document;
}
Word ドキュメントに編集可能な領域を作成する
特定のセクションを編集可能にする以外に、変更可能な範囲を絞り込むために、テキスト範囲に基づいて編集可能な領域を作成することができます。以下は、Spire.Doc for C++ を使用して、読み取り専用の Word ドキュメントに編集可能な領域を作成する手順です。
- Document のオブジェクトを作成します。
- Document->LoadFromFile() メソッドを使用して Word ファイルを読み込みます。
- Document->Protect() メソッドを使用して、保護種類を AllowOnlyReading に設定します。
- PermissionStart のオブジェクトと PermissionEnd のオブジェクトを作成します。
- 編集可能な領域の開始を示す PermissionStart のオブジェクトを DocumentObjectCollection->Insert(int index, Spire::Doc::lDocumentObject *entity) メソッドで段落の最初に挿入します。
- 編集可能な領域の終わりを示す PermissionEnd のオブジェクトを、DocumentObjectCollection->Add(Spire::Doc::lDocumentObject *entity) メソッドで段落の終わりに追加します。
- Document->SaveToFile() メソッドを使用して、ドキュメントを保存します。
- C++
#include "Spire.Doc.o.h";
using namespace Spire::Doc;
using namespace std;
int main() {
//Documentのオブジェクトを作成する
Document* document = new Document();
//Wordファイルを読み込む
document->LoadFromFile(L"C:\\予定外.docx");
//保護種類をAllowOnlyReadingに設定する
document->Protect(ProtectionType::AllowOnlyReading, L"permission-psd");
//パーミッションの開始と終了のタグを作成する
PermissionStart* start = new PermissionStart(document, L"regionOne");
PermissionEnd* end = new PermissionEnd(document, L"regionOne");
//選択した段落を編集できるようにするために、開始タグと終了タグを追加する
document->GetSections()->GetItem(0)->GetParagraphs()->GetItem(0)->GetChildObjects()->Insert(0, start);
document->GetSections()->GetItem(0)->GetParagraphs()->GetItem(2)->GetChildObjects()->Add(end);
//ドキュメントを保存する
document->SaveToFile(L"Output/編集可能な領域の設定.docx", FileFormat::Docx2013);
document->Close();
delete document;
}
Word ドキュメントから編集可能な領域を削除する
編集可能領域を削除するためには、ドキュメント内の「PermissionStart」「PermissionEnd」タグを探し出し、削除する必要があります。以下、詳しい手順を説明します。
- Document のオブジェクトを作成します。
- Document->LoadFromFile() メソッドを使用して、編集可能な領域を含むWordドキュメントを読み込みます。
- ドキュメント内のすべての子オブジェクトをループし、ある子オブジェクトが PermissionStart クラスまたは PermissionEnd クラスのインスタンスであるかどうかを判断します。もしそうなら、Paragraph->GetChildObjects()->Remove(Spire::Doc::IDocumentObject *entity) メソッドを使用して、その子オブジェクトを段落から削除します。
- Document->SaveToFile() メソッドを使用して、ドキュメントを保存します。
- C++
#include "Spire.Doc.o.h";
using namespace Spire::Doc;
using namespace std;
int main() {
//Documentのオブジェクトを作成する
Document* document = new Document();
//Wordファイルを読み込む
document->LoadFromFile(L"Output\\編集可能な領域の設定.docx");
//「PermissionStart」「PermissionEnd」タグを検索し、削除する
for (int i = 0; i < document->GetSections()->GetCount(); i++)
{
Section* section = document->GetSections()->GetItem(i);
for (int j = 0; j < section->GetBody()->GetParagraphs()->GetCount(); j++)
{
Paragraph* para = section->GetBody()->GetParagraphs()->GetItem(j);
for (int k = 0; k < para->GetChildObjects()->GetCount(); k++)
{
DocumentObject* obj = para->GetChildObjects()->GetItem(k);
if (dynamic_cast<PermissionStart*>(obj) != nullptr || dynamic_cast<PermissionEnd*>(obj) != nullptr)
{
para->GetChildObjects()->Remove(obj);
}
else
{
k++;
}
}
}
}
//ドキュメントを保存する
document->SaveToFile(L"Output/編集可能な領域の削除.docx", FileFormat::Docx2013);
document->Close();
delete document;
}
Word ドキュメントから制限を解除する
Spire.Doc for C++ は、権限パスワードを知らなくても編集制限を解除することができます。以下、詳しい手順を説明します。
- Document のオブジェクトを作成します。
- Document->LoadFromFile() メソッドを使用して、編集制限を含む Word ドキュメントを読み込みます。
- Document->Protect() メソッドを使用して、保護種類を NoProtection に設定します。
- Document->SaveToFile() メソッドを使用してドキュメントを保存します。
- C++
#include "Spire.Doc.o.h";
using namespace Spire::Doc;
using namespace std;
int main() {
//Documentのオブジェクトを作成する
Document* document = new Document();
//Wordファイルを読み込む
document->LoadFromFile(L"Output\\編集の制限.docx");
//保護種類をNoProtectionにする
document->Protect(ProtectionType::NoProtection);
//ドキュメントを保存する
document->SaveToFile(L"Output/制限の解除.docx", FileFormat::Docx2013);
document->Close();
delete document;
}
Word ドキュメントからパスワードを削除する
暗号化された Word ドキュメントのパスワードが不要になった場合、削除することができます。以下、詳しい手順を説明します。
- Document のオブジェクトを作成します。
- Document->LoadFromFile((LPCWSTR_S fileName, Spire::Doc::FileFormat fileFormat, LPCWSTR_S password) メソッドを使用してパスワード保護された Word ドキュメントを読み込みます。
- Document->RemoveEncryption() メソッドを使用して、パスワードを削除します。
- Document->SaveToFile() メソッドを使用して、ドキュメントを保存します。
- C++
#include "Spire.Doc.o.h";
using namespace Spire::Doc;
using namespace std;
int main() {
//Documentのオブジェクトを作成する
Document* document = new Document();
//暗号化されたWordファイルを読み込む
document->LoadFromFile(L"Output\\暗号化.docx", FileFormat::Docx, L"password");
//開くパスワードを解除する
document->RemoveEncryption();
//ドキュメントを保存する
document->SaveToFile(L"Output/パスワードの削除.docx", FileFormat::Docx2013);
document->Close();
delete document;
}
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。