[Resolvido]Como gerar um pdf do PrinterJob?

2 respostas
alexfe

Pessoal tenho aqui um bloco de codigo que imprime diretamente na impressora local padrao.
Quero saber como gerar um pdf atraves do PrinterJob, esse pdf vou usar em projeto web.

PrintService  service = PrintServiceLookup.lookupDefaultPrintService();

PrinterJob job = PrinterJob.getPrinterJob();
job.setPrintService(service);
job.setPrintable(relatorio, relatorio.getFormatoPagina());
job.setCopies(relatorio.getCopias());
job.print();// imprime direto na impressora

Como gerar um pdf do PrinterJob ???

2 Respostas

alexfe

Alguém ?

alexfe

Juro que algum dia ainda vou criar um blog com soluções para os mistérios de programação que o google não soluciona kkkkkkkkkkk
Ta ai mais uma solução :slight_smile:

private byte[] gerarPdfRelatorio(Relatorio relatorio) throws DocumentException {

		relatorio.gerarRelatorio();

		Document doc = new Document();
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		PdfWriter writer = PdfWriter.getInstance(doc, baos);

		if (writer != null) {
			doc.compress = true;
			writer.setFullCompression();
		}

		doc.setMargins(0, 0, 0, 0);
		doc.open();
		PdfContentByte cb = writer.getDirectContent();
		writer.setMargins(0, 0, 0, 0);

		for (int p = 0; p < relatorio.getQuantidadePaginas(); p++) {
			PdfTemplate tp = cb.createTemplate(relatorio.getTamanho().width, relatorio.getTamanho().height);
			Graphics2D g2 = tp.createGraphics(relatorio.getTamanho().width, relatorio.getTamanho().height);

			relatorio.print((Graphics) g2, new PageFormat(), p);
			g2.dispose();
			cb.addTemplate(tp, 0, 0);
			if (p < relatorio.getQuantidadePaginas())
				doc.newPage();
		}

		doc.close();

		return baos.toByteArray();
Criado 29 de agosto de 2014
Ultima resposta 9 de set. de 2014
Respostas 2
Participantes 1