Patent ID: 12229320

DETAILED DESCRIPTION

To meet all the previous requirements, Application Server130implements three processes.(1) Get Unique Key on PDF(2) Store Unique Key on PDF(3) Get Hidden Annotation for Mark

With reference toFIG.4, Application Flow, a user working in User's Client Environment400will Request a PDF410from the Application Server405. The Application Server405, in Search Generated PDF Records step421, searches table900(seeFIG.9) for the requested PDF using the Application's PDF Document Identifier for the requested PDF with Processed field false. If a record was found as tested at step422, then the Generated PDF contained in the found record is downloaded and the UUID from the record is used as the Unique Key for this process. Otherwise, a Unique Key is generated at step430. The key can be generated from a Database field that guarantees uniqueness, from a universally unique identifier (UUID) which is a 128-bit label, or by a random number generator. While the probability that a UUID is not duplicated is not zero, it is close enough to zero to be acceptable. Likewise, a randomly generated Unique Key should be of a bit-length sufficiently long to render the probability of a duplicate near zero. A PDF is generated to be downloaded by the end-user with the process Generate PDF called at step415. The generated PDF has the Unique Key stored on it via a call at step418to the Store Unique Key on PDF process (seeFIG.7). The resulting PDF is then stored in the database record at step423Create Generated PDF Record (seeFIG.9) by inserting a new record storing the PDF contents, the Application PDF Document Identifier, and the Unique key and setting the Process field to false in table900. The Generated PDF is then downloaded to the user.

At step420the user edits the downloaded PDF with a local application such as Adobe Reader potentially changing AcroFields and performing Digital Signatures. When done, the user uploads the PDF to the Application Server405which receives it at Receive PDF step425. Receive PDF step425calls the Get Unique Key on PDF process600(seeFIG.6). The uploaded PDF is rejected at step435if Get Unique Key on PDF process600returns Failed. The uploaded PDF is rejected at step440if the unique key returned by Get Unique Key on PDF process600does not match the unique key stored at step418or the UUID in a found record in step421. If the uploaded PDF is not rejected, then Application Server405updates the database, e.g., table900, and Marks the Generated PDF record as processed at step424by setting the processed field to true. Then at step450, the Process PDF process is called on the uploaded PDF.

Generate PDF415and Process PDF450are generalized process referencing how the Application Server405deals with the managed PDF.

Processes

Get Unique Key on PDF process600

With reference toFIG.6, the process starts and takes as input a PDF document.

Step605Find Hidden Annotation for Mark, searches through the PDF document for the Hidden Annotation. The manner of identifying the correct Hidden Annotation depends upon the manner in which it was originally coded and may encompass looking for a specific name for the Annotation, looking for a specific custom Annotation type, or looking for a specific custom object to the Annotation Object.

In one embodiment, this may be done by using the /NM (Name) field on the annotation and giving it a unique name for the key. Other embodiments use a custom Annotation type or add a custom field to the Annotation Object such as /TrnCustomData. Three example Annotations are provided inFIGS.10,11, and12.FIG.10shows using the /NM field to uniquely name the Hidden Annotation and a Text Annotation is used with the unique key stored in the /Contents.FIG.11shows an example using /NM field to uniquely name the Hidden Annotation and using a Rectangle Annotation and a custom Annotation field /TrnCustom Data to contain the unique key.FIG.12illustrates using encoding a unique key in a Hidden Annotation using a Rectangle Annotation and a custom Annotation field /TrnCustom Data field containing the unique key as subset of the custom data. In this example, the UUID is stored in the name “key” thus allowing other information to be stored in the /TrnCustomData field. In each example, the annotation is identified and located by way of the /NM field.

If the Annotation found step610is yes, then the unique key stored on the annotation by step710is returned by step615Return Unique Key on Annotation. Otherwise, failed is returned at step620Return Failed.

If the example inFIG.12were used in a particular implementation, Process600would find the Hidden Annotation by searching the PDF for an annotation having the name “provenance-signing-key” and returning 67255b06ed0cb394d8e10c0ab2e2909a5eae4835.

Store Unique Key on PDF Process700

With reference toFIG.7, the process starts and takes as input a PDF document and a unique key.

Step705calls the Get Hidden Annotation for Mark process800(seeFIG.8) with the PDF document.

Step710stores the unique key on the Annotation return from step705. There are numerous ways to do this, and the invention is not limited to a specific way except as expressly claimed. Examples are described above in connection with the description of step605.

The process completes at step720.

Get Hidden Annotation for Mark Process800

With reference toFIG.8, the process starts and takes as input a PDF document.

Step805Find Hidden Annotation for Mark, searches through the PDF document for the Hidden Annotation used by this algorithm. Many ways of identifying the correct Hidden Annotation are possible and the invention is not limited to a specific way unless expressly claimed. Examples are described above in connection with the description of step605.

If the Annotation found step810is yes, then the found Annotation is returned at step815Return Found Annotation. Otherwise, Create Hidden Annotation for Mark step820creates an Annotation in the PDF document, flags it as Hidden, and identifies it for lookup by steps805and605.

Step825Return Annotation returns the Annotation created by step810.

With reference toFIG.9, Table900is an exemplary table for storing information about downloaded PDFs, their contents, unique ID, and if it was processed.