Uma das atividades mais corriqueiras se você trabalha com a Nfe eletrônica é tentar encontrar itens vendidos para um fornecedor ou mesmo saber quantas vendas foram efetuadas a um fornecedor em determinado ano.
Isso pode se tornar bem simples se você mantêm de maneira organizada as pastas com as DANFE´s enviadas e os registros destas ditas DANFE´s em pdf. Basta criar um aplicativo simples em ASP.NET com alguns comboxes para cada ano, um textbox e um botão.
Aqui vai abaixo um código-fonte em ASP.NET VB.NET que realiza a busca de palavras em PDF´s organizados em pastas anuais. Trata-se de um utilitário que é uma mão na roda para quem necessita de informações rapidamente.
A rotina abaixo foi criada no Visual Studio 2012 Versão 11.0.5 com o Net Framework 4.5
Imports System.Runtime
Imports System.IO
Protected Sub PesquisarPDF_Click(sender As Object, e As EventArgs) Handles Button2.Click
oFileInfoCollection = DirDiretorio.GetFiles("*.pdf")
'### Lista somente os PDFps
Stexto = ""
For i = 0 To oFileInfoCollection.Length() - 1
oFileInfo = oFileInfoCollection.GetValue(i)
'Abrir cada arquivo PDF e extrair o texto do mesmo
Stexto = PesquisanoPDF(oFileInfo.Name)
'Pesquisar a Palavra
Dim index As Integer = Stexto.IndexOf(TxtPesq.Text)
If index >= 0 Then
Dim index As Integer = Stexto.IndexOf(TxtPesq.Text)
If index >= 0 Then
Dim getTexto As String = Stexto.Substring(index, Stexto.IndexOf(".", index + 85) - index - 5)
' String is in file, starting at character "index"
TxtResposta.Text = TxtResposta.Text + "Texto presente no arquivo: " + oFileInfo.Name + ". Extrato do texto: " + getTexto + "." + vbCrLf
End If
Next
TxtResposta.Enabled = True
TxtResposta.Focus()
End Sub
Public Function PesquisanoPDF(PdfFileName As String) As String
Dim sArquivo As String = ""
'Para tornar a consulta mais rápida, seperam-se os pdf em pastas de anos
If Chk2011.Checked = True Then
sArquivo = "\\172.16.0.25\Nfe\2011\" + PdfFileName
End If
If Chk2012.Checked = True Then
sArquivo = "\\172.16.0.25\Nfe\2012\" + PdfFileName
End If
If Chk2013.Checked = True Then
sArquivo = "\\172.16.0.25\Nfe\2013\" + PdfFileName
End If
If Chk2014.Checked = True Then
sArquivo = "\\172.16.0.25\Nfe\2014\" + PdfFileName
End If
If Chk2015.Checked = True Then
sArquivo = "\\172.16.0.25\Nfe\2015\" + PdfFileName
End If
Dim oReader As New iTextSharp.text.pdf.PdfReader(sArquivo)
Dim sOut = ""
For i = 1 To oReader.NumberOfPages
Dim its As New iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy
Dim its As New iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy
sOut &= iTextSharp.text.pdf.parser.PdfTextExtractor.GetTextFromPage(oReader, i, its)
Next
Next
Return sOut
End Function
Sucesso a todos!
By
Leonardo Metelys