DioDocs for PDF
注釈タイムスタンプの編集
PDFビューワ > PDFの編集 > 機能 > 注釈タイムスタンプの編集

PDFドキュメントに注釈を追加したり、既存の注釈を変更した時、タイムスタンプ情報が保存されます。 こうしたタイムスタンプ情報は、ユーザーが行った注釈に関する追加・変更を追跡しやすくします。注釈の modificationDate プロパティには、注釈を追加・変更した時のタイムスタンプ情報が格納されます。これらのタイムスタンプは、自動的にビューワ上(注釈エディタの「更新日(Modified)」やコメントパネル)に表示されます。また、これらのタイムスタンプは、注釈に対して変更が加えられた時、自動的に更新されます。

modificationDateプロパティは文字列型であり、空(日付と時刻が指定されていないことを意味する)か、PDF内部フォーマットまたはシステムロケール設定に従った日付と時刻を含むことができます。デフォルトでは、このプロパティは読み取り専用です。しかしながら、PDFビューワでは、allowModificationDateEditオプションを有効にすることで、組み込みのUIカレンダーからmodificationDateプロパティの値を設定することができます。また、pdfStringToDateメソッド、dateToPdfStringメソッド、updateAnnotationメソッドを使用することで、タイムスタンプをプログラムで設定することもできます。pdfStringToDateメソッドはPDFの日付文字列をJavaScriptのDateオブジェクトに変換するものであり、一方、dateToPdfStringメソッドはJavaScriptのDateオブジェクトをPDFの日付文字列に変換します。The updateAnnotation メソッドは注釈を更新するものです。

メモ: 注釈の任意のプロパティが変更された時、Modified プロパティは自動的に現在の日付と時刻に更新されます。

注釈タイムスタンプをプログラムから編集する

注釈タイムスタンプをプログラムから編集する方法については、以下のサンプルコードを参照してください。

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上から注釈タイムスタンプを編集する

注釈タイムスタンプをUI上から変更したい場合、以下のようにします。

  1. 注釈エディタから更新日を変更できるように、allowModificationDateEditオプションを"true"に設定します。
    JavaScript
    コードのコピー
    // 注釈の「更新日」をUI上から編集可能にします。
    var viewer = new DsPdfViewer("#host", { supportApi: 'api/pdf-viewer', allowModificationDateEdit: true });
    
  2. 注釈エディタ上の「更新日(Modified)」を使用して、タイムスタンプを変更します。

注釈タイムスタンプを削除する

注釈タイムスタンプをプログラムで削除する方法については、以下のサンプルコードを参照してください。

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");
        }
    );