API pra ler PDF

Senhores,

preciso ler um arquivo .pdf e salvar informações no banco,dei uma pesquisada e achei essa ferramenta http://pdfbox.apache.org/,mas ainda não testei,alguém que já tenha feito isso poderia me dar uma opinião?

utilizei o pdfbox sem problemas em uma aplicação desktop.

o detalhe detalhe q eu tive os pdfs tem q ter algum tipo de padrão de layout.

no restante sem problemas.

att,

[quote=pedruhenrik]utilizei o pdfbox sem problemas em uma aplicação desktop.

o detalhe detalhe q eu tive os pdfs tem q ter algum tipo de padrão de layout.

no restante sem problemas.

att,[/quote]

Fala Pedro,vc teria algum exemplo que eu pudesse ver?

Existe tambem o iText (http://itextpdf.com/), é uma ferramenta para gerar PDF, mas lê também, eu acho… tenho quase certeza que lê.

eu prefiro as versoes 2.1.x, nao gosto das versoes 5.x

tem exemplos melhores no guj, mas segue um ai:

[code]import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;

import org.apache.pdfbox.pdfparser.PDFParser;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.util.PDFTextStripper;

public class PdfParser {

public static void main(String[] args) throws IOException {

	PdfParser pdf = new PdfParser();
	pdf.setEnderecoRecurso("c:\\spedfiscal2.pdf");
	
	String retorno = pdf.getConteudo();

	FileWriter x = new FileWriter("c:\\teste.txt", false);
	x.write(retorno);
	x.close();
	
	
	FileInputStream stream = new FileInputStream("c:\\teste.txt");
	
	StringBuilder txt = new StringBuilder();
	InputStreamReader streamReader = new InputStreamReader(stream);
	BufferedReader reader = new BufferedReader(streamReader);
	String line = null;
	
	while ((line = reader.readLine()) != null) {

		txt.append(line);
			txt.append("\n");
		if (line.contains(" ")) {
			txt.append(line.replaceAll(" ", ";"));
			txt.append("\n");
		}
	}
	
	System.out.println(txt);
	
}

private String enderecoRecurso;

public void setEnderecoRecurso(String enderecoRecurso) {
	this.enderecoRecurso = enderecoRecurso; // endereço dos ficheiros
}

public String getConteudo() {

	File f = new File(this.enderecoRecurso);
	FileInputStream is = null;
	try {
		is = new FileInputStream(f);
	} catch (IOException e) {
		System.out.println("ERRO: " + e.getMessage());
		return null;
	}

	PDDocument pdfDocument = null;
	try {
		PDFParser parser = new PDFParser(is);
		parser.parse();
		pdfDocument = parser.getPDDocument();
		PDFTextStripper stripper = new PDFTextStripper();
		return stripper.getText(pdfDocument);
	} catch (IOException e) {
		return "ERRO: Não é possível abrir a stream" + e;
	} catch (Throwable e) {
		// Fazemos um catch, uma vez que precisamos de fechar o recurso
		return "ERRO: Um erro ocorreu enquanto tentava obter o conteúdo do PDF"
				+ e;
	} finally {
		if (pdfDocument != null) {
			try {
				pdfDocument.close();
			} catch (IOException e) {
				return "ERRO: Não foi possível fechar o PDF." + e;
			}
		}
	}
}

}[/code]

att,

Mas pedruhenrik você sabe me dizer se tem como eu mudar as propriedades com essa API?

Ex:. eu tenho um arquivo .doc e estou convertendo para PDF, e eu queria que quando fizesse a conversão o usuário teria a permissão de somente visualizar, a opção de salver e imprimir tem que estar bloqueada.

marcosvperboni realmente não sei.

rsrs

boa sorte!

Boa tarde,

Estou usando este código, porém quando na linha 17 passo um diretório em que o arquivo PDF contenha mais do que uma página
acontece o IOException. Este acontece na Linha 37 parser.parse();

Alguém sabe o motivo?

o código eh exatamente igual?

posta a exception completa pf

att

pedruhenrik estou tentando inserir uma varial no rodapé do PDF, mas eu nem sei por onde comerçar… tipo assim quando alguém imprimir um documento em pdf no rodapé tem que aparecer assim: “Documento impresso: x vezes”, isso é por questão de controle de impressão, você poderia me ajudar por favor?.. ou me passar algum caminho das pedras para eu começar a minha pesquisa, pois eu ja procurei no google e não achei nada equivalente.

http://pdfbox.apache.org/

[quote]
Features

PDF to text extraction
Merge PDF Documents
PDF Document Encryption/Decryption
Lucene Search Engine Integration
Fill in form data FDF and XFDF
Create a PDF from a text file
Create images from PDF pages
Print a PDF[/quote]

nunca fiz isso antes! rsrs

mas eu tentaria:

[list]extrair o texto[/list]
[list]adicionar variavel[/list]
[list]gerar pdf novamente[/list]

att