NoPassReversePages.cs
//
// このコードは、DioDocs for PDF のサンプルの一部として提供されています。
// © MESCIUS inc. All rights reserved.
//
using System;
using System.IO;
using System.Drawing;
using GrapeCity.Documents.Pdf;
using GrapeCity.Documents.Pdf.Security;
using GrapeCity.Documents.Text;
namespace DsPdfWeb.Demos
{
// このサンプルでは、パスワードで保護されたPDFをパスワードを指定せずに読み込み、
// PDF内のページの順序を変更する(逆順にする)方法を紹介しています。
// 変更したPDFは保存後、パスワードを指定して再度読み込み、PDFビューワにて表示しています。
public class NoPassReversePages
{
public int CreatePDF(Stream stream)
{
using var fsSrc = File.OpenRead(Path.Combine("Resources", "PDFs", "Wetlands-password-user.pdf"));
// パスワードで保護されたPDFをパスワードを指定せずに読み込めるようDecryptionOptionsを設定します。
var dopt = new DecryptionOptions() { ThrowExceptionIfInvalidPassword = false };
var docSrc = new GcPdfDocument();
docSrc.Load(fsSrc, dopt);
for (int i = 0; i < docSrc.Pages.Count / 2; ++i)
docSrc.Pages.Swap(i, docSrc.Pages.Count - 1 - i);
// デモサイト限定の処理:
// 変更後のパスワードで保護されたドキュメントを一時ファイルに保存し、
// それをパスワードを指定して再度読み込むことで、PDFビューワにて
// パスワードを入力せずに表示できるようにします。
var fn = Path.GetTempFileName();
{
docSrc.Save(fn);
var doc = new GcPdfDocument();
using var fs = File.OpenRead(fn);
doc.Load(fs, "user");
doc.Save(stream);
}
File.Delete(fn);
return docSrc.Pages.Count;
}
}
}