Eu consegui ler os arquivos da pasta que estão em pdf, com a regex eu estou pegando alguns valores que estão nos arquivos, só que não estou conseguindo somar os valores que pego de cada aqrquivo, estou jogando eles em uma lista, só que ela não esta somando os valores, alguém pode me ajudar?
public String pdfLeitor() {
File arquivos = null;
String convnovodenovo = null;
File file = new File("C:\\Users\\Ruben\\Desktop\\teste\\");
File afile[] = file.listFiles();
int i = 0;
String novo = null;
for (int j = afile.length; i < j; i++) {
arquivos = afile[i];
novo = String.valueOf(arquivos);
list2.add(novo);
}
for (String obj : list2) {
try {
PdfReader reader = new PdfReader(obj);
String texto = PdfTextExtractor.getTextFromPage(reader, 1);
} catch (IOException e) {
e.getStackTrace();
}
}
return texto;
}
public Double Compra() {
double valor = 0;
String nome = null;
String nomenovo = null;
double valornovo = 0;
double soma=0;
String regex = "(\\d{1,}-CURSO).*( \\w+|\\w+\\.\\w+\\s+ )";
Pattern padrao = Pattern.compile(regex);
Matcher matcher = padrao.matcher(pdfLeitor());
StringBuilder num;
while (matcher.find()) {
Locale.setDefault(Locale.US);
num = new StringBuilder(matcher.group(1).replaceAll("[\\.,]", ""));
num.insert(num.length() - 2, ".");
valor = Double.parseDouble(num.toString());
double valormap = valor;
if (mapC.containsKey(nomenovo)) {
double valornome = mapC.get(nomenovo);
valornovo = valormap + valornome;
BigDecimal bd = new BigDecimal(valornovo).setScale(2, RoundingMode.HALF_EVEN);
valornovo = bd.doubleValue();
mapC.put(nomenovo, valornovo);
list.add(new Prod(valornovo));
} else {
mapC.put(nomenovo, valormap);
list.add(new Prod(valormap));
}
}
for(Prod obj: list) {
soma += obj.getValorCompra();
}
for (String key : mapC.keySet()) {
valortotalC = mapC.get(key);
}
return soma;
}
Pelo o que eu tô entendendo esse trecho percorre uma lista (list2) de String, criar um objeto PdfReader e usa ele como parâmetro para o método PDFTextoExtractor.getTextFromPage que retorna uma String, até aí tudo bem. Só que em cada interação do loop é criado uma String texto que é usada para armazenar esse valor, dessa forma os conteúdos dessa variável se perdem em cada passo do loop! Me corrija se eu estiver errado!
@Jelson1 O objetivo desse trecho de código, ele lê o conteúdo do arquivo em pdf.
Sim o valor esta se perdendo, ele esta retornando só um valor… não consigo testar agora, mais estava pensando a minha variável novo tem como conteúdo todos os arquivos em pdf lido, acredito que tenho q colocar ela no lugar da variável texto…oque vc acha?
O valor da variável texto com a concatenação dos dois pdf:
Meu texto 1
Meu texto 2
A segunda solução é amarzenar cada texto em uma lista e a sua função nesse caso não retornaria uma String, mas sim uma lista de String. Só que desse modo você vai ter que fazer uma modificação na sua outra função para receber essa lista.
na minha variável texto o resultado dela ja é (Meu Texto 1 e Meu Texto 2)…o problema é que o valor que estou pegando com minha regex do texto 1 e do texto 2, não estou conseguindo somar esses valores, entendeu?
Na sua função compra() eu vi que você declarou duas variáveis: nome e nomenovo, ambas inicializadas como null. Sendo que a variável nome parece que não está sendo utilizada e a variável nomenovo é sempre null, é isso mesmo que você quer??
Então você já verificou se essa lista contempla todos os valores que estão no pdf. Se o tamanho da lista corresponde ao total de valores presente nos dois PDFs (se isso for possível). Você pode debugar essa parte!
Também esqueci de perguntar qual tá sendo o resultado dessa soma, ela tá errada, tá incompleta ou gera um erro?
Não tenho um conhecimento aprofundado em hashmap, não posso ajudar muito com isso!
Vi aqui que a minha variável texto só esta me retornando o conteúdo de um arquivo, por isso não estou conseguindo somar, ja tentei colocar em uma lista e mesmo assim só me retorna um conteúdo, pode me ajudar a fazer com que retorne todos arquivos que estão em minha pasta?
String novo = null;
public String pdfLeitor() {
File arquivos = null;
File file = new File("C:\\Users\\Ruben\\Desktop\\teste\\");
File afile[] = file.listFiles();
int i = 0;
for (int j = afile.length; i < j; i++) {
arquivos = afile[i];
novo = String.valueOf(arquivos);
}
try {
PdfReader reader = new PdfReader(novo);
String texto = PdfTextExtractor.getTextFromPage(reader, 1);
} catch (IOException e) {
e.getStackTrace();
}
return texto;