Especificações (regras) para criar PDF com Java?

Eu li alguns tópicos na net ensinando a gerar PDFs por meio de frameworks como o iText, e até ja testei um exemplo bem simples (e deu certo), mas eu gostaria de saber o que esses frameworks fazem por detrás dos panos para gerar os PDFs. Àqueles que puderem me dar uma força, obrigado.

o iText oferece o source para download. É só baixar ele e dar uma olhada. :wink:

Eu ate tentei, mas nao entendi direito a organização da biblioteca. Nao compreendi que classe realmente vai fazer o trabalho de criação do PDF, e quais as classes de suporte, se alguém puder me indicar a classe chave do iText eu agradeceria. Vlws. :smiley:

Eu encontrei um material federal sobre o assunto. Para quem tem a curiosidade de conhecer os detalhes de um arquivo PDF basta baixar esse arquivo (e ler - e claro) :):
http://www.adobe.com/devnet/acrobat/pdfs/pdf_reference_1-7.pdf
Trata-se de um documento feito pela propria adobe (ingles).

Conclusão: a biblioteca iText na verdade cria um script (postscript) que vai ser responsavel pela apresentacao do pdf. Depois e so enviar o script em um documento com extensao .pdf pra alguma pasta do computador e o pdf esta feito. Eu fiz o seguinte teste no gedit: eu inseri o seguinte script…

%PDF1.5
1 0 obj                          % Document catalog
    << /Type /Catalog
        /Pages 2 0 R
        /Metadata 6 0 R
    >>
endobj
2 0 obj                          % Page tree
    << /Type /Pages
        /Kids [3 0 R]
        /Count 1
    >>
endobj
3 0 obj                          % 1s t page
    << /Type /Page
        /Parent 2 0 R
        /MediaBox [0 0 612 792]
        /Contents 4 0 R
    >>
endobj
4 0 obj                          % Page contents
    << /Length 35 >>
    stream
        *** Encrypted Page-marking operators ***
    endstream
endobj
xref
    ....
trailer
    << /Size 8
         /Root 1 0 R
         /Info 5 0 R
         /Encrypt 8 0 R
    >>
startxref
495
%%EOF

salvei como teste.pdf e deu certo. Ele cria um pdf em branco. Se voce abrir um editor de texto e deixar totalmente em branco e salvar com extensao .pdf, voce vai ver que o programa que le pdf nao vai reconhecer o arquivo.
Espero que esse topico possa ajudar os curiosos de plantao :).