Assim como o core Prisma e algumas libs, este módulo de funções eu modifiquei a partir de um módulo lua já existente, visto que sua licença permite isso:
https://github.com/cpressey/pdf.lua/blob/master/UNLICENSE (https://github.com/cpressey/pdf.lua/blob/master/UNLICENSE)
A versão pdf.lua pode ser encontrada aqui:
https://github.com/cpressey/pdf.lua (https://github.com/cpressey/pdf.lua)
No futuro, não tão perto, quero desenvolver, eu mesmo, uma lib pdf com base em C, do mesmo modo que fiz com outras libs, incluindo a psqlite3, mysqlite, ig, pcgi etc.
Bem, trata-se de uma lib básica que gera um arquivo pdf de texto na versão pdf-1.0 sem codificação.
A lib, se já não perceberam, está inclusa na versão Prisma-1.0.100, inclusive nos exemplos.
Vamos ao exemplo básico:
local PDF = inclua "pdf"
pdf = PDF.novo()
helv = pdf:nova_fonte{ nome = "Helvetica" };
times = pdf:nova_fonte{ nome = "Times-Roman" };
corrier = pdf:nova_fonte{ nome = "Corrier" };
pag = pdf:nova_pagina();
pag:inicio_texto();
pag:def_fonte(corrier, 23);
pag:def_texto_pos(10,700);
pag:mostre( "Ola mundo em prisma pdf" );
pag:fim_texto();
pag:ad();
pdf:escreva("minimo.pdf");
Detalhes:
local PDF = inclua "pdf"
Incluímos a biblioteca pdf para usar suas funções.
pdf = PDF.novo()
Criamos um novo objeto pdf.
helv = pdf:nova_fonte{ nome = "Helvetica" };
times = pdf:nova_fonte{ nome = "Times-Roman" };
corrier = pdf:nova_fonte{ nome = "Corrier" };
Definimos algumas fontes. (Só vamos usar uma no exemplo, é apenas ilustrativo);
pag = pdf:nova_pagina();
Criamos um objeto página pdf.
pag:inicio_texto();
Definimos que vamos começar a escrever na página.
pag:def_fonte(corrier, 23);
Antes de escrevermos, temos que definir a fonte a ser usada (criada acima). O segundo parâmetro é o tamanho, ok!
pag:def_texto_pos(10,700);
Definindo a posição do texto na página (em coordenadas: col x lin);
Obs.: a linha (700 é de baixo para cima, isto é, se colocar '5' no segundo parâmetro, o texto sairá no rodapé e não no topo, a coluna (10) é normal);
Obs.: se o valor for negativo ex.: -10, então a posição é de cima para baixo, ou seja, -10 sai no topo e não no rodapé.
pag:mostre( "Ola mundo em prisma pdf" );
Enfim, imprimimos na página em pdf a string acima, note que usamos o método 'mostre'.
Obs.: se quisesse escrever mais linhas no documento seria necessário definir nova posição para a nova linha de modo a não escrever em cima da linha já escrita.
pag:fim_texto();
Depois de colocar todo o texto desejado na página, finalizamos com o método 'fim_texto()';
pag:ad();
Ainda temos que adicionar a página escrita acima no documento com o método 'ad()'
pdf:escreva("minimo.pdf");
E, no fim, basta salvar em um arquivo usando o método 'escreva()';
Pronto, tente abrir o arquivo gerado em um leitor pdf.
Veja mais exemplos de pdf que estão inclusos nos exemplos prisma:
http://www.mediafire.com/file/0t003qn58o4itjl/exemplos_prisma.7z (http://www.mediafire.com/file/0t003qn58o4itjl/exemplos_prisma.7z)
Até mais...