ficaria no writer, ai poderia enviar a string writer, seria isso ???[/quote]
Eu nunca usei essa API que lhe passei, mas você não leu com atenção o link que lhe passei.
E “writer” é escrita, não leitura. Portanto, o código que você deve analisar é esse:
String path = "/Users/daniel/Temp/mypdf.pdf";
PdfReader reader = new PdfReader(path);
int numberOfPages = reader.getNumberOfPages();
PdfTextExtractor extractor = new PdfTextExtractor(reader);
for (int i = 0;i<numberOfPages;i++) {
System.out.println(extractor.getTextFromPage(i+1));
}
Obviamente, ao invés de usar um “System.out.println” para imprimir o conteúdo em console, podes usar um StringBuffer para armazenar o conteúdo em String e depois usar, como julgar mais adequado.
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;
}
}
}
}
}
nesse exemplo teria uma variavel que pega todo o conteudo do arquivo PDF
seria essa linha StringBuilder TXT = new StringBuilder();
o TXT que é a variavel que esta salvando todoso conteudo do PDF ???
Tu está testando o código ou querendo algo pronto ?
Estou começando a achar que falta esforço para compreender o código, para entender o que foi postado.
Como eu disse, eu nunca trabalhei com esta API, apenas a encontrei e lhe passei a referência.
Mas vamos lá, a priori o código funciona de forma simples, porque não faça um teste somente assim:
String path = "c:\\spedfiscal2.pdf";
PdfReader reader = new PdfReader(path);
int numberOfPages = reader.getNumberOfPages();
PdfTextExtractor extractor = new PdfTextExtractor(reader);
StringBuffer msg = new StringBuffer();
for (int i = 0;i<numberOfPages;i++) {
msg.append(extractor.getTextFromPage(i+1));
}
Runtime run = Runtime.getRuntime();
Process pr = run.exec( "net send ip " + msg.toString());
pr.waitFor();