OpenMem メソッド

一連の操作をイン-メモリPDF上で実行出来るように、イン-メモリPDFファイルを開く。

Function OpenMem(InputStream As Variant,
                 [Password As String]) As PDFProcessorHandle

パラメータ

戻り値

成功した場合、タイプ PDFProcessorHandle のハンドルがオープンされるファイルへ返されます。

注意点

OpenMem は、各操作の後にPDFを閉じ、再分析することなく、イン-メモリPDFファイル上の一連の操作を実行することを可能にし、その結果、性能を最適化します。

ファンクションは、PDF上で操作することが可能になるPDFProcessorHandle オブジェクトを返します。たとえPDFに何も変更が加えられなくても、ハンドルは実行後に必ず閉じられなくてはいけません。

PDF出力は、入力PDFと共に少なくとも2度メモリ内に納まらなくてはならないことに注意してください。大きなサイズのPDFだとメモリ不足になってしまう可能性があり、その場合PDF作成プロセスの失敗となることがあります。

パスワードパラメータについての注意:

暗号化された入力PDFのためのオーナーパスワードを提供することは、いつもその入力PDFを処理することを許可するでしょう。つまり、可能であればオーナーパスワードは利用した方が好ましいです。しかしながら、いくつかの場合において、ユーザーパスワードだけで十分なときがあります。ユーザーパスワードが十分かどうかは、どのようなファンクションをPDF上でコールするかそしてどのようなセキュリティ設定で暗号化されるかによります。

GetPageCount, GetPageRotationGetPageSize はいつもユーザーパスワードで動作します。

OptimizeBeforeClose で暗号化ファイルを最適化すること、CloseDecryptCloseMemDecrypt を用いて暗号を取り除くこと、また CloseEncryptCloseMemEncrypt を使用して暗号化されているファイルを異なるセキュリティ設定(例えば、パスワードや許可)で再暗号化することは、いつもオーナーパスワードを必要とします。

しかしながら、必要な許可がユーザーパスワード経由で与えられた場合、その他のファンクションコールはユーザーパスワードだけで成功出来ます。該当のファンクションコールは以下の通りです。

AddAttachment, AddFreeText, AddHyperlink, AddNote, AddRubberStamp, AddSquareCircle: ユーザーパスワードが注釈変更許可を許されている場合に動作。

ExtractAllBookmarks, ExtractAllHyperlinks, GetDocumentInfo: ユーザーパスワードが抽出許可を許されている場合に動作。

RotatePages, AppendBookmark, DeleteAllBookmarks: ユーザーパスワードが全編集許可またはドキュメントアセンブリの許可、いずれかを許されている場合に動作。

SetDocumentInfo, SetDocumentInfoXMP, AddStamp, AddStamp2, AddTrueTypePDFText, AddWatermark: ユーザーパスワードが全ての編集許可を許されている場合に動作。

VB.NET での使用例

Dim inMem() As Byte = File.ReadAllBytes("C:\input.pdf")
Dim oProcessor As PDFProcessor = Nothing
Dim oProcessorHandle As PDFProcessorHandle = Nothing
Try
   oProcessor = New PDFProcessor
      oProcessorHandle = oProcessor.OpenMem(inMem, Nothing)
   oProcessorHandle.AddHyperlink(0, _
                                 0, _
                                 50, _
                                 80, _
                                 370, _
                                 100, _
                                 "http://www.bcltechnologies.com", _
                                 prcAnnotBorderStyle.PRC_BORDERSTYLE_DASHLINE_MEDIUM, _
                                 0)
   oProcessorHandle.AddStamp("C:\image.jpg", _
                             0, _
                             prcStampHPosition.PRC_STAMP_HPOS_CENTER, _
                             prcStampVPosition.PRC_STAMP_VPOS_CENTER, _
                             prcStampZOrder.PRC_STAMP_ZORDER_TOP, _
                             0, _
                             0, _
                             0, _
                             100)
   Dim outMem() As Byte = oProcessorHandle.CloseMem()
   File.WriteAllBytes("C:\output.pdf", outMem)
Catch ex As System.Runtime.InteropServices.COMException
   MessageBox.Show(ex.Message)
Finally
   oProcessorHandle.Close()
End Try

C#での使用例

byte[] inMem = File.ReadAllBytes(@"C:\input.pdf");
PDFProcessor oProcessor = null;
PDFProcessorHandle oProcessorHandle = null;
try
{
   oProcessor = new PDFProcessor();
      oProcessorHandle = oProcessor.OpenMem(inMem, null);
   oProcessorHandle.AddHyperlink(0, 
                                 0, 
                                 50, 
                                 80, 
                                 370, 
                                 100, 
                                 "http://www.bcltechnologies.com", 
                                 prcAnnotBorderStyle.PRC_BORDERSTYLE_DASHLINE_MEDIUM, 
                                 0);
   oProcessorHandle.AddStamp(@"C:\image.jpg", 
                             0, 
                             prcStampHPosition.PRC_STAMP_HPOS_CENTER, 
                             prcStampVPosition.PRC_STAMP_VPOS_CENTER, 
                             prcStampZOrder.PRC_STAMP_ZORDER_TOP, 
                             0, 
                             0, 
                             0, 
                             100);
   byte[] outMem = (byte[])oProcessorHandle.CloseMem();
   File.WriteAllBytes(@"C:\output.pdf", outMem);
}
catch(System.Runtime.InteropServices.COMException ex)
{
   MessageBox.Show(ex.Message);
}
finally
{
   oProcessorHandle.Close();
}