Impressão de Arquivos

Galera,

Como faço para imprimir um Arquivo PDF???

Estou quebrando a cabeça…

Detalhe, quero uma imprimir através de um Intervalo de Páginas (de Pag. x a y),
e em uma determinada impressora!!!
Agradeço desde Já!!!

Segue abaixo um codigo que imprime… a partir dele vc conegue chega no que precisa.

/**
	 * envia para a impressora especificada, o arquivo PDF.
	 * 
	 * @param nomeImpressora -
	 *            nome qualificado da impressora
	 * @param arquivoPdf -
	 *            java.io.File contem o arquivo PDF
	 * @param numeroCopias -
	 *            inteiro que define numero de copias ( precisar ser maior que
	 *            zero)
	 * @param usarPaisagem -
	 *            indica se deseja imprimir usando paisagem ou nao.
	 * @throws Exception -
	 *             lancado quando algum parametro invalido/nulo ou nenhuma
	 *             impressora disponivel ou erro ao tentar imprimir.
	 */
	public static void imprimirPdf(String nomeImpressora, File arquivoPdf,
			Integer numeroCopias) throws ImpressaoException, IOException, PrinterException {		
		
		boolean impressoraRegistradaSistema = false;
		if (!StringUtils.isBlank(nomeImpressora) && arquivoPdf != null
				&& numeroCopias != null && numeroCopias > 0) {
			PrinterJob print = PrinterJob.getPrinterJob();
			print.setCopies(numeroCopias);
			PrintService[] impressoras = PrinterJob.lookupPrintServices();
			
			if (! (impressoras.length>0) ){
				throw new ImpressaoException("nenhuma.impressora.disponivel.sistema.operacional");
			}
			
			for (PrintService ps : impressoras) {
				
				if (nomeImpressora.equals(ps.getName())) {
						
						impressoraRegistradaSistema = true;
						print.setPrintService(ps);
						print.setJobName(arquivoPdf.getName());
						Pageable page = PDDocument.load(arquivoPdf);
						print.setPageable(page);
						print.print();
					
				}
			}			
			if(!impressoraRegistradaSistema){
				throw new ImpressaoException("Erro: Impressora informada não está instalada nesse servidor!");
			}
			if (!(impressoras.length > 0)) {
				throw new ImpressaoException("Erro: Nenhuma impressora disponivel!");
			}
		} else {
			throw new ImpressaoException(
					"Erro: Parametros Informados Inválidos, impossivel imprimir.");
		}
	}

Há um problema, meu Jar está no Servidor, quero imprimir no Cliente, seria necessário um Applet[/url]?.. e outra… gostaria de passar o Arquivo PDF e … deste imprimir somente da Página x a Y Ex: Arquivo de 10 Págs. quero da Pag 3 a 6.

Mesmo assim agradecidooo pela ajuda!!!

da uma olhada em

com.lowagie.text.pdf.PdfReader;

la tem uns esquemas de trabalhar com as pagina do pdf

ex:

private int calculaQuantidadePaginas(TramitacaoProcessoDocumentoEntity tp){
		
		int qtPaginas = 0;
		PdfReader pdfReader;
		
		try {
			pdfReader = new PdfReader(tp.getSbAnexo());
			qtPaginas = pdfReader.getNumberOfPages();
		} catch (IOException e) {
			log.error("Erro ao le PDF para calculo de quantidade de paginas", e);
		}
		
		return qtPaginas;
	}

acho que caminhando por ai vc acha como pegar apenas as paginas que vc quer…

Consegui fazer da seguinte forma, eu fuçeiiiii demais… baixei uma Applet tal de jPDF… comecei criar meus codigos utilizando a bilbioteca deste (sem src, só jar…) e DEMO… bom…

dai eu add assim…

HashPrintRequestAttributeSet attrSet = new HashPrintRequestAttributeSet(); //Ajusteeesssss

e agora o intervalo de paginas

PageRanges pr = new PageRanges(3, 9);

        attrSet.add(pr);  // Intervalo de páginas...depois tiro essas constantes

Pronto… agora vou só deixar mais do meu Jeito!!!

Valeu Cara… Valeu Muitoooooooo!!! :smiley:

Vou mesclar o meu código anterior, esse ajuste e o que voce me passouuuu!!!

Logo que eu acabar, posto o Src aqui …!!! vlaaaaaweeueue

ixxxii…

agora veio o seguinte problema,

Muitos Warnings são gerados durante a geração da Impressão do PDF,

Porem,

porem quando a impressão é concluida, verifico que (tanto PDFCreator como Impressora Comum):

Somente as Imagens Aparecem na Impressão o que é texto ou não aparece, ou fica meio de distorcido…

E Agoraaaa???

o que seráaaaa???