PDFドキュメントに注釈を追加したり、既存の注釈を変更した時、タイムスタンプ情報が保存されます。 こうしたタイムスタンプ情報は、ユーザーが行った注釈に関する追加・変更を追跡しやすくします。注釈の modificationDate プロパティには、注釈を追加・変更した時のタイムスタンプ情報が格納されます。これらのタイムスタンプは、自動的にビューワ上(注釈エディタの「更新日(Modified)」やコメントパネル)に表示されます。また、これらのタイムスタンプは、注釈に対して変更が加えられた時、自動的に更新されます。
modificationDateプロパティは文字列型であり、空(日付と時刻が指定されていないことを意味する)か、PDF内部フォーマットまたはシステムロケール設定に従った日付と時刻を含むことができます。デフォルトでは、このプロパティは読み取り専用です。しかしながら、PDFビューワでは、allowModificationDateEditオプションを有効にすることで、組み込みのUIカレンダーからmodificationDateプロパティの値を設定することができます。また、pdfStringToDateメソッド、dateToPdfStringメソッド、updateAnnotationメソッドを使用することで、タイムスタンプをプログラムで設定することもできます。pdfStringToDateメソッドはPDFの日付文字列をJavaScriptのDateオブジェクトに変換するものであり、一方、dateToPdfStringメソッドはJavaScriptのDateオブジェクトをPDFの日付文字列に変換します。The updateAnnotation メソッドは注釈を更新するものです。
注釈タイムスタンプをプログラムから編集する方法については、以下のサンプルコードを参照してください。
JavaScript |
コードのコピー
|
---|---|
viewer.open("wetlands.pdf").then( res => { // 更新したい注釈を取得します。 // ※ここでは、subject(件名)が指定した文字と一致する最初の注釈を取得します。 viewer.findAnnotations("test subject", { findField: 'subject', findAll: true }).then(function (dataArray) { if (dataArray) { // 注釈の現在の更新日(modification date)を取得します。 // ※取得した日付は、PDFの文字列形式からJavaScriptのDateオブジェクトに変換します。 const oldDate = viewer.pdfStringToDate(dataArray[0].annotation.modificationDate); // 取得した日付に1日追加した日付を求めます。 // ※月と年の境界を正しく処理できるように、このように日付操作を行います。 const newDate = new Date(oldDate); newDate.setDate(newDate.getDate() + 1); // 1日単位で日付を追加します // 注釈に設定する日付をPDF文字列形式に変換します。 dataArray[0].annotation.modificationDate = viewer.dateToPdfString(newDate); // 注釈の更新日を更新します。 // ※updateAnnotationメソッドに対して、{ propertyName: "modificationDate" }を渡すことで、 // APIが更新日を自動的に現在の日付で上書きせず、指定した日付で更新できます。 viewer.updateAnnotation(dataArray[0].pageIndex, dataArray[0].annotation, { propertyName: "modificationDate" }); } else { console.error("Annotation not found."); } }); viewer.save("UpdateModificationDate.pdf"); } ); |
注釈タイムスタンプをUI上から変更したい場合、以下のようにします。
JavaScript |
コードのコピー
|
---|---|
// 注釈の「更新日」をUI上から編集可能にします。 var viewer = new DsPdfViewer("#host", { supportApi: 'api/pdf-viewer', allowModificationDateEdit: true }); |
注釈タイムスタンプをプログラムで削除する方法については、以下のサンプルコードを参照してください。
JavaScript |
コードのコピー
|
---|---|
viewer.open("wetlands.pdf").then( res => { // Retrieve the annotation data for the specified user "John" by searching for annotations with a title field viewer.findAnnotations("test subject", { findField: "subject" }).then(function (dataArray) { // Check if the annotation data was found if (dataArray) { // Set the modification date to null to remove the timestamp from the annotation comments dataArray[0].annotation.modificationDate = null; // Update the annotation in the viewer with the modified property // Passing the propertyName ("modificationDate") ensures that the API doesn't overwrite // the modification date automatically with the current date. viewer.updateAnnotation(dataArray[0].pageIndex, dataArray[0].annotation, { propertyName: "modificationDate" }); } else { // Log an error if the annotation was not found console.error("Annotation not found."); } }); viewer.save("RemoveModificationDate.pdf"); } ); |