Assinar documento PDF com certificado A3

Srs,

Boa tarde a todos!
Tenho uma aplicação web rodando com jboss.
Essa aplicação gera um arquivo .PDF através de dados do banco de dados.
Atualmente utilizo do iText para gerar o pdf e para assinar o PDF utilizando certificado tipo A1 (arquivo).
Preciso agora assinar esse documento PDF utilizando certificado A3 (cartao).
Para isso, fiz um applet que comunica com o leitor smartcard para ter acesso ao cartão com o certificado, o que funcionou corretamente.
O problema é que a chave privada, ao contrário do certificado, não pode ser extraída do cartão. E eu preciso de encaminhar essa chave privada para a aplicação web assinar o pdf que foi gerado.
Idéia que tive para contornar o problema (gambiarra): gerei o pdf no servidor, encaminhei para o pc do cliente via string em base64, decodifiquei o pdf, acessei o smartcard e utilizei o certificado e a chave privada para assinar o pdf (via applet), reencaminhei o pdf assinado via string em base64 para o servidor. Nossa que pulo o gato… mas funcionou. Só que pra isso criei outro problema: o cliente precisa ter o iText no classpath. Ou seja, não resolvi o problema.
Alguém já conseguiu resolver esse problema ou já desenvolveu uma aplicação java web que precise utilizar o cartao do cliente para assinar documentos do lado do servidor?
Lembrando que preciso assinar os documentos do lado do servidor, pois do lado do cliente eu consigo tranquilamente.

Tem como me ajudar com o applet para assinar documentos médicos, mais não sei nem por onde começar.