Pesquisando um pouco mais consegui por margem, título, texto como paragrafo, alinhar o texto ou a imagem.
Para corrigir o problema de acentuação basta mudar o encoding para iso-8859-1, como abaixo:
<h:commandLink>
Link
<p:dataExporter type="pdf" encoding="iso-8859-1" target="tablePorCategoria" preProcessor="#{categoryBean.preProcessPDF}" fileName="cars"/>
</h:commandLink>
Para colocar margem, título, e paragráfo, segue o exemplo de método preProcessor :
[code] public void preProcessPDF(Object document) throws IOException, BadElementException, DocumentException {
//cria o documento
Document pdf = (Document) document;
//seta a margin e página, precisa estar antes da abertura do documento, ou seja da linha: pdf.open()
pdf.setMargins(200f, 200f, 200f, 200f);
pdf.setPageSize(PageSize.A4);
pdf.addTitle("Título here brother");
pdf.open();
//aqui pega o contexto para formar a url da imagem
ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
String logo = servletContext.getRealPath("") + File.separator + "resources/images" + File.separator + "logo.png";
//cria a imagem e passando a url
Image image = Image.getInstance(logo);
//alinha ao centro
image.setAlignment(Image.ALIGN_CENTER);
//adciona a img ao pdf
pdf.add(image);
//adiciona um paragrafo ao pdf, alinha também ao centro
Paragraph p = new Paragraph("teste frase");
p.setAlignment("center");
pdf.add(p);
}[/code]
O primefaces usa o Itext, caso queira algo mais vc pode procurar no 4shared.com por Itext in Action é um livro sobre o assunto.