Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gabriela Miglioli

Pegar o número de págs dentro de um PDF

Recommended Posts

Boa tarde pessoal, estou com uma função onde preciso pegar o número de págs de dentro de um pdf.

Já tenho um programa que faz isso prá mim, ele me gera um txt que contém o nº pags. - Endereço e nome arquivo.

 

Exemplo:

4 C:\Documents and Settings\Gabriela\Meus documentos\08012009\2623482\002_34066440.pdf

5 C:\Documents and Settings\Gabriela\Meus documentos\08012009\2623482\02_16423847.pdf

1 C:\Documents and Settings\Gabriela\Meus documentos\08012009\2623482\02_18549762.pdf

 

Com isso eu tenho um outro programa que me gera um arquivo de saída. E nesse arquivo de saída eu preciso pegar o número de págs de cada pdf.

 

Minha função está indicando sempre o mesmo caminho, ou seja, independente do arquivo que eu esteja rodando, ele me traz sempre o mesmo número de págs. Como se sempre visualizasse o 1 pdf do exemplo.

 

Meu código é esse:

 

Private Function fncPega_Qtd_Paginas_RE(ByVal strRE As String) As Integer

 

Dim arrLinhas1() As String, arrCampo1() As String

Dim strArq As String, strConteudo1 As String, strFilePDF As String

Dim intFile As Integer, intLinha As Integer, intRetPag As Integer

Dim objFso As Object

 

Set objFso = CreateObject("Scripting.FileSystemObject")

 

intRetPag = 0

intFile = FreeFile

strArq = lstImagens.Path & "\" & "pagecnt.txt"

 

If Not objFso.FileExists(strArq) Then

MsgBox "Arquivo pagecnt.txt NÃO encontrado no diretório selecionado!", vbCritical, "Atenção"

End

End If

 

Open strArq For Input As #intFile

strConteudo1 = Input(LOF(intFile), intFile)

Close #intFile

 

arrLinhas1 = Split(strConteudo1, vbLf)

 

For intLinha = LBound(arrLinhas1) To UBound(arrLinhas1) - 3

arrCampo1 = Split(arrLinhas1(intLinha), "\")

arrCampo1 = Split(arrCampo1(4), ".")

strFilePDF = Trim(arrCampo1(0)) & "." & Trim(arrCampo1(1))

strFilePDF = Left(strFilePDF, 15)

 

If Trim(strRE) = Trim(strFilePDF) Then

intRetPag = CInt(Left(Trim(arrLinhas1(0)), 2))

Exit For

End If

Next

 

fncPega_Qtd_Paginas_RE = intRetPag

Set objFso = Nothing

 

End Function

Alguém pode me ajudar???

 

Desde já obrigada!

Gaby!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gaby, estou tentando simular sua função aqui, mas está meio difícil. Me ajuda a entender essa parte:

 

arrLinhas1 = Split(strConteudo1, vbLf)

For intLinha = LBound(arrLinhas1) To UBound(arrLinhas1) - 3
arrCampo1 = Split(arrLinhas1(intLinha), "\")
arrCampo1 = Split(arrCampo1(4), ".")
strFilePDF = Trim(arrCampo1(0)) & "." & Trim(arrCampo1(1))
strFilePDF = Left(strFilePDF, 15)

If Trim(strRE) = Trim(strFilePDF) Then
intRetPag = CInt(Left(Trim(arrLinhas1(0)), 2))
Exit For
End If
Next

Porque você está usando o split? O que tem dentro do seu arquivo txt?

 

Seu for está indo de lbound(arrlinhas1) até ubound(arrlinhas1) -3. Porque o -3?

 

E assim, sua função toda está se baseando no arquivo "pagecnt.txt". O que tem dentro desse arquivo e, como o conteúdo dele é alterado para que cada vez ele pegue o valor de um PDF diferente?

 

Veja se consegue responder essas dúvidas pra ver se consigo te ajudar. Que realmente está confuso assim, sem entender o que está fazendo o que...

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.