Criando arquivos PDF com jQuery e Convert Api

Depois dos tutorias de Como gerar um arquivo do Excel com PHP e Como criar um arquivo do Word (.DOC) com PHP ficou faltando com certeza como fazer o mesmo com PDF.

Eu tento ser um programador muito prático, e criar arquivos PDF é uma coisa muito simples se você conhecer o serviço da convertapi.com. O processo para criar um arquivo PDF é semelhante o que demonstrei no artigo de como Como criar um arquivo do Word (.DOC) com PHP, lá eu criei uma página HTML e usei os headers do PHP para gerar estes certificados.

Para criar arquivos PDF faremos o mesmo, iremos criar uma página HTML e a partir de conteúdo da página iremos gerar o nosso arquivos PDF.

Criando uma conta na convertapi.com

Acesse a página de cadastro e prossiga com os seus dados. Após o cadastro você obterá uma chave de acesso à API e um token secreto.

Pronto! Agora vamos programar!

Como funciona a conversão de páginas web para PDF com a convertapi.com

Antes de tudo é importante entender que converter uma página HTML para PDF pode causar algumas frustrações com textos desalinhados e DIVs quebradas. Isso é compreensível se considerarmos que interpretar o código de página da web é função do navegador e não de uma API. Portanto, para evitarmos contratempos é importante que você crie uma página HTML ou PHP da forma mais simples possível.

Você pode sim criar uma página usando BootStrap por exemplo, mas ainda assim, tente ser cautoloso com os componentes que irão compor o conteúdo da página.

Para este exemplo eu criei uma versão deste mesmo artigo em um código mais enxuto que pode ser acessado aqui – https://aulas-profanderson.azurewebsites.net/tpi/converterHTMLparaPDF/artigo-blogson.html

Enfim, voltando ao assunto, para acessar a API basta acessar o seguinte endereço https://v2.convertapi.com/convert/url/to/pdf?Secret=SeuCodSecretoAqui seguido do parâmetro Url=EnderecoDaPaginaQueDesejaConverter

Por exemplo:

https://v2.convertapi.com/convert/url/to/pdf?Secret=SeuCodSecretoAqui&Url=https://aulas-profanderson.azurewebsites.net/tpi/converterHTMLparaPDF/artigo-blogson.html/

Podemos também definir o nome do arquivo PDF que será gerado e a orientação do papel para impressão, se será retrato (portrait) ou paisagem (landscape).

https://v2.convertapi.com/convert/url/to/pdf?Secret=SeuCodSecretoAqui&Url=https://aulas-profanderson.azurewebsites.net/tpi/converterHTMLparaPDF/artigo-blogson.html/&FileName=BLOGSON&PageOrientation=landscape

O resultado será uma saída jSON como esta;

Percebe que, se temos uma saída jSON basta tratá-la da forma adequada que conseguiremos extrair o valor FileData desta saída. O valor FileData corresponde ao arquivo PDF, porém, em formato base64.

Eis um exemplo simples e funcional para extrair a base64 do arquivo. O código abaixo basta copiar e salvar em um arquivo .html, porém não esquece de adicionar o seu token secreto na url;

<script
  src="https://code.jquery.com/jquery-3.4.0.min.js"
  integrity="sha256-BJeo0qm959uMBGb65z40ejJYGSgR7REI4+CW1fNKwOg="
  crossorigin="anonymous"></script>

<a download="Como-criar-arquivos-PDF-com-JQuery-e-ConvertAPI.pdf" href="javascript:void(0)" id="conteudoPDF" onclick="GeraPDF()"> Gerar PDF do artigo do Blogson... </a>

<script>

function GeraPDF()
{

	var texto = $('#conteudoPDF').html();
	if (texto != 'Pronto! Clique para Baixar')
	{
		$('#conteudoPDF').html('Por favor aguarde.... estamos preparando o arquivo, isso pode demorar alguns segundos...');

		var urlPagina = "https://v2.convertapi.com/convert/url/to/pdf?Secret=SeuCodSecretoAqui&Url=https://aulas-profanderson.azurewebsites.net/tpi/converterHTMLparaPDF/artigo-blogson.html/&FileName=BLOGSON&PageOrientation=portrait";
		
		var dadosjSon = '';
		$.get(urlPagina, function(data) {			
				$('#conteudoPDF').html('Pronto! Clique para Baixar');
				$('#conteudoPDF').attr("href", "data:pdf/plain;base64," + data.Files[0].FileData)
		});   
	}
}
</script>

Finalmente o arquivo PDF;

API para PDFConverter HTML em PDFcriar PDF com JavaScriptcriar PDF com jQuerygerar PDF com JavaScriptgerar PDF com jQuerygerar PDF com PHPPDF com JQUeryPDF com PHP