Skip to content

PdfPrinter

ayslanms edited this page Aug 29, 2016 · 2 revisions

PDFPrinter é um componente que exporta o HTML da página para PDF, ele foi feito usando frameworks já consolidados como o flying-saucer e itext. Abaixo segue a lista de dependências necessárias:

framework link
Flying Saucer https://code.google.com/p/flying-saucer/
iText http://itextpdf.com/
Jsoup http://jsoup.org/
HTML Cleaner http://htmlcleaner.sourceforge.net/
Apache Batik (exportar SVG) http://xmlgraphics.apache.org/batik/

Para projetos maven depencências necessárias para o componente são mostradas na seção de dependências.

Atributos

Nome Valor Padrão Tipo Descrição
target String Id do componente a ser exportado para PDF
fileName String Nome do arquivo PDF que será gerado para download
orientation portrait String Orientação do PDF, deve-se indicar "portrait" para retrato ou "landscape" para paisagem

Utilização

Para utilizar o component deve-se indicar o “target”, que será o id do componente a ser exportado:

<p:commandButton title="Export PDF" immediate="true" ajax="false" value="Export PDF">  
	<x:pdfPrinter target="exportTargetId" fileName="File Name" />  
</p:commandButton>

O componente download pode ser adicionado para gerar uma melhor experiência:

<p:commandButton title="Export PDF" immediate="true" ajax="false" value="Export PDF">  
            <x:download />  	
            <x:pdfPrinter target="exportTargetId" fileName="File Name" />             
</p:commandButton>

  Exemplo de exportação de um h:panelGroup:

<p:commandButton title="Export PDF" immediate="true" ajax="false"
				 value="Export PDF">
	<x:download/>
	<x:pdfPrinter target="panelExport" fileName="Lorem Ipsum" />
</p:commandButton>

<h:panelGroup id="panelExport" layout="block" style="border: 1px solid black; padding: 10px;">   
    <h1>Title</h1>  
    <h2>Subtitle</h2>  
    <p>  
        Lorem ipsum dolor sit amet, <span style="color: red;">consectetur adipiscing elit</span>.   
        Cras at accumsan mauris. Nulla a accumsan nisl. Nam dapibus a velit quis consequat.   
        Mauris a volutpat sem. Suspendisse semper enim in enim gravida, quis maximus ante lobortis.
    </p>  
</h:panelGroup>

Exportação de gráficos

O pdfPrinter é compatível na exportação de gráficos baseados em SVG, como é o caso do google charts (que também está presente no primefaces-extensions).

Gráficos do próprio primefaces não são compatíveis pois são baseados em canvas.

Customização de estilos

A lib flying-saucer é compatível com a especificação CSS, sendo assim para adicionar os estilos basta adicionar nos estilos CSS. Lembrando que é possível ainda adicionar o um CSS inline, e indicar o media=print, para que o estilo seja adicionado apenas na impressão, ou media=screen para que seja apenas na tela como mostrado abaixo:

<style media="screen" style="text/css">
	.no-screen{display: none;}
</style>
<style media="print" style="text/css">
         /* mudar cor do cabeçalho das tabelas (apenas na impressão) */
	.ui-state-default {background-color: #e6e6e6 !important;}
	.no-print{display: none;}
</style>

<span class="no-screen">Este conteúdo não será exibido na tela, apenas na impressão</span>
<span class="no-print">Este conteúdo não será impresso</span>

Clone this wiki locally