Gerando simples documento pdf em prisma

Iniciado por adalberto, Maio 01, 2017, 05:01:51 PM

tópico anterior - próximo tópico

adalberto

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

A versão pdf.lua pode ser encontrada aqui:

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


Até mais...