Resposta parcial:
O processo de como a assinatura X.509 funciona é descrito pela Adobe em detalhe: Uma assinatura é apenas um objeto adicional no arquivo PDF, que contém, entre outros elementos, o intervalo de bytes para o qual a assinatura é feita. Então
The signing process is as follows:
- A document to be signed is turned into a stream of bytes.
- The entire PDF file is written to disk with a suitably-sized space left for the signature value as well as with worst-case values in the ByteRange array.
ByteRange is an array of four numbers. The first number in each pair is the offset in the file (from the beginning, starting from 0) of the beginning of a stream of bytes to be included in the hash. The second number is the length of that stream. The two pairs define two sequences of bytes that define what is to be hashed. The actual signature value is stored in the /Contents key between the end of the first sequence and the beginning of the second one. In Figure 4, the hash is calculated for bytes 0 through 839, and 960 through 1200.
- Once the location of the signature value is known in terms of offsets in the file, the ByteRange array is overwritten using the correct values. Because the byte offsets must not change, extra bytes following the new array statement are overwritten with zeros.
- The hash of the entire file is computed, using the bytes specified by the real ByteRange value using a hash algorithm such as SHA-256. Acrobat always computes the hash for a document signature over the entire PDF file, starting from byte 0 and ending with the last byte in the physical file, but excluding the signature value bytes.
- The hash value is encrypted with the signer’s private key and a hex-encoded PKCS#7 object signature object is generated.
- The signature object is placed in the file on disk, overwriting the placeholder /Contents value. Any space not used for the signature object is overwritten with zeros.
- The PDF file is re-loaded in Acrobat to ensure that the in-memory and on-disk versions are identical.
Não há motivos para que alguém não consiga fazer isso com uma assinatura calculada por gpg.
Também deve ser óbvio agora que a incorporação da assinatura não "contorna a ideia geral de assinatura e verificação de documentos", conforme mencionado em outra resposta.
No entanto, não conheço nenhuma ferramenta em que esse processo (e a verificação de assinatura correspondente) já esteja implementado e seja facilmente disponível. Então, por razões de praticidade (agora), é aconselhável tentar isso, se você está enviando a assinatura para outras pessoas que precisam lidar com isso.