Usuário com melhor resposta
Localizar uma substring num arquivo PDF???

Pergunta
-
Pessoal, estou com o seguinte problema. Eu tenho um grande arquivo PDF e uso o iTextSharp para "quebrar" em vários arquivos menores contento uma página do arquivo maior. só que ao gerar esses arquivos menores, eu preciso vasculhar uma informação(matricula do funcionário) dentro de cada página do arquivo maior. Preciso da matricula do funcionario para nomear cada arquivo menor gerado. O código abaixo é para abrir um PDF e "quebrar" em arquivos diversos, um para cada página.
Code SnippetPdfReader reader = new PdfReader(PathServerArq);
int n = reader.NumberOfPages;
// we retrieve the size of the first page
iTextSharp.text.Rectangle psize = reader.GetPageSize(1);
float width = psize.Width;
float height = psize.Height;int i = 0;
while (i < n)
{
Document document = new Document(psize, 50, 50, 50, 50);
i++;// É exatamente nesse ponto q preciso da matricula
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(PathTemp + @"\" + NomeArq[NomeArq.GetUpperBound(0)] + "_" + i + ".pdf", FileMode.Create));
document.Open();
PdfContentByte cb = writer.DirectContent;
PdfImportedPage page1 = writer.GetImportedPage(reader, i);
cb.AddTemplate(page1, -0f, -0f);BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
document.Close();
}Ou seja eu preciso identificar a posição de um carecter especial, usando algo parecido com "InStr" do vb e a partir desse posição pegar uma substring. Exemplo no pdf vai estar assim Matricula#98745 e eu preciso recuperar o 98745.
Alguém já fez algo parecido, com iTextSharp ou qqer outro meio?
Abraços.
Respostas
-
Pessoal, fica registrado a solução que encontrei.
Um componente free que transforma um arquivo pdf em uma string, feito isso eu consigo usar os métodos da classe String para tratar as informações que eu necessito. Pesquisei dois dias e realmente só encontrei essa solução.
Segue o link do componente: PDFBox http://www.pdfbox.org/
Referencie na pasta bin essas dlls.
IKVM.GNU.Classpath.dll
IKVM.Runtime.dll
PDFBox-0.7.3.dll
Code Snippetusing org.pdfbox.pdmodel;
using org.pdfbox.util;//Exemplo de utilização
//Transforma o PDF numa string
PDDocument doc = PDDocument.load(pNomeArq);
PDFTextStripper stripper = new PDFTextStripper();
strText = stripper.getText(doc);Um abraço a todos.
Todas as Respostas
-
Daniel,
Boa tarde.
No VB6 existe a função chamada "Instr", onde você informa como parametro o texto que deseja localizar, e onde começar e etc...
Na classe string do .NET temos o método "Contains", onde você informa o texto que deseja localizar em seu arquivo.
string texto;
texto.Contains("Matricula#98745");
******
Existe também o método "Substring", uqe igual a função "Mid", onde você informa onde iniciar e onde terminar a leitura de sua string.
string texto;
texto.Substring(0,10);
*******
Acredito que as informações do arquivo PDF maior, você deve salavar em uma string, e depois quebar a string utilizando o método "Split" que realiza a quebra por um texto pré-definido, para que você possa gerar um array de string a partir de cada matrícula diferente.
{
conteudo = sr.ReadToEnd();
GerarPdfMenor(); //chame um método que ira gerar o arquivo Pdf.
}
Finalmente você poderá gerar seu arquivo PDF menor, referente a cada matrícula.
Se esse post for útil, marque.
Paulo Galego.
-
-
Pessoal, fica registrado a solução que encontrei.
Um componente free que transforma um arquivo pdf em uma string, feito isso eu consigo usar os métodos da classe String para tratar as informações que eu necessito. Pesquisei dois dias e realmente só encontrei essa solução.
Segue o link do componente: PDFBox http://www.pdfbox.org/
Referencie na pasta bin essas dlls.
IKVM.GNU.Classpath.dll
IKVM.Runtime.dll
PDFBox-0.7.3.dll
Code Snippetusing org.pdfbox.pdmodel;
using org.pdfbox.util;//Exemplo de utilização
//Transforma o PDF numa string
PDDocument doc = PDDocument.load(pNomeArq);
PDFTextStripper stripper = new PDFTextStripper();
strText = stripper.getText(doc);Um abraço a todos.
-