Uma das atividades mais corriqueiras se voce trabalha com a Nfe eletronica e 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 voce mantem 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 botao.Aqui vai abaixo um codigo-fonte em ASP.NET VB.NET que realiza a busca de palavras em PDF s organizados em pastas anuais. Trata-se de um utilitario que e uma mao na roda para quem necessita de informacoes rapidamente.A rotina abaixo foi criada no Visual Studio 2012 Versao 11.0.5 com o Net Framework 4.5'Aqui estao as referencias necessarios para o VB.NET ASP.NETImports System.RuntimeImports System.IOProtected Sub PesquisarPDF_Click(sender As Object, e As EventArgs) Handles Button2.ClickoFileInfoCollection = DirDiretorio.GetFiles("*.pdf")'### Lista somente os PDFpsStexto = ""For i = 0 To oFileInfoCollection.Length() - 1oFileInfo = oFileInfoCollection.GetValue(i)'Abrir cada arquivo PDF e extrair o texto do mesmoStexto = PesquisanoPDF(oFileInfo.Name)'Pesquisar a PalavraDim index As Integer = Stexto.IndexOf(TxtPesq.Text)If index >= 0 ThenDim 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 + "." + vbCrLfEnd IfNextTxtResposta.Enabled = TrueTxtResposta.Focus()End SubPublic Function PesquisanoPDF(PdfFileName As String) As StringDim sArquivo As String = ""'Para tornar a consulta mais rapida, seperam-se os pdf em pastas de anosIf Chk2011.Checked = True ThensArquivo = "\\172.16.0.25\Nfe\2011\" + PdfFileNameEnd IfIf Chk2012.Checked = True ThensArquivo = "\\172.16.0.25\Nfe\2012\" + PdfFileNameEnd IfIf Chk2013.Checked = True ThensArquivo = "\\172.16.0.25\Nfe\2013\" + PdfFileNameEnd IfIf Chk2014.Checked = True ThensArquivo = "\\172.16.0.25\Nfe\2014\" + PdfFileNameEnd IfIf Chk2015.Checked = True ThensArquivo = "\\172.16.0.25\Nfe\2015\" + PdfFileNameEnd IfDim oReader As New iTextSharp.text.pdf.PdfReader(sArquivo)Dim sOut = ""For i = 1 To oReader.NumberOfPagesDim its As New iTextSharp.text.pdf.parser.SimpleTextExtractionStrategysOut &= iTextSharp.text.pdf.parser.PdfTextExtractor.GetTextFromPage(oReader, i, its)NextReturn sOutEnd FunctionSucesso a todos!ByLeonardo Metelys Usuarios experientes geralmente reaproveitam muito codigo-fonte jaescrito anteriormente.Isso ajuda a compor novos aplicativos e a criar mais rapidamente novas necessidades.Quando falamos de ASP.NET, no entanto, ha uma pequena regra a ser seguida e queos usuarios menos experientes podem acabar esbarrando pelo caminho.Essa regra e: Em ASP.NET nunca crie o mesmo connection para outras aplicacoes ou dentro da mesma aplicacao e sempre que abrir um connection trate de fecha-lo no final de sua utilizacao. Digamos que voce crie uma pequena aplicacao e faca o codigo abaixo:Dim myCommand As MySqlCommandDim myConnection As MySqlConnectionmyConnection = New MySqlConnection("server=252.168.70.99; user id=root; password=1007; database=alianca; pooling=false;")myConnection.Open()sSQL = "UPDATE registraprod SET CORRIGIDO = '" & sCorreto & "', HORACORRECAO = '" & sHora & "', DATA = '" & sInicio & "', POSICAO = '" & sPosicao & "', LOCALFALHA = '" & sLocalFalha & "', TIPOFALHA = '" & sTipoFalha & "', REPARADOR = '" & TxtReparador.Text & "' " & _ " WHERE CODBARRAS = '" & TxtBarras.Text & "' AND PRODUTO = '" & sProd & "'"myCommand = New MySqlCommand(sSQL, myConnection2IM)dsY = myCommand.ExecuteReaderEm seguida, em outro form ou em um