2015-12-16 2 views
-2

У меня есть набор из 4000 PDF-адресов, которые должны извлекать свойства документа, такие как дата создания документа, размер документа, количество страниц.Извлечь свойства PDF из pdf-адреса URL-адрес

Примечание: PDF-документ не следует загружать.

Пожалуйста, дайте мне предложение.

С уважением, Аравинда

+0

Если вы не можете использовать программное обеспечение на серверах, на которые указывает этот URL-адрес, и вы не хотите загружать PDF-файлы, как вы предлагаете ничего знать о файлах? Я думаю, что вы определили физическую невозможность здесь ... –

+0

Если какое-либо программное обеспечение есть, предположите, что. Поэтому я могу попробовать. –

+1

Если это физически невозможно, как можно предложить программное обеспечение? Более того, запрашивать рекомендации по программному обеспечению для Stackoverflow является вне границ. –

ответ

0

хорошо ... я писал немного, и поиск в Интернете для решения этого ...

решения без загрузки файла не найдено, и не думаю, возможное.

но это я сделал код, который загружает файл, получает его свойства и затем удаляет его. все полностью прозрачно для пользователя.

КАК ИСПОЛЬЗОВАТЬ: любой тип клеток = GetPDFData (URL; NumberData)

напр: = getPDFData (А2; 1)

NumbersData:

1 = Имя

2 = ДатаСтатистика

3 = Дата Дата регистрации

4 = PageCount (это "Бета", иногда не работает лол)

5 = размер

6 = вид

И код: (вставьте в новый модуль)

Public Function GetPDFData(URL As String, TipoDato As Integer) As String 

    Dim oFS As Object 
    Dim strFilename As String 
    CreateFolder 
    DownloadFile (URL) 
    strFilename = "C:\Temp\pdfTemporal\" & NombreDeArchivo(URL) 
    Set oFS = CreateObject("Scripting.FileSystemObject") 
    Select Case TipoDato 
     Case 1 
     GetPDFData = NombreDeArchivo(URL) 
     Case 2 
     GetPDFData = oFS.GetFile(strFilename).DateCreated 
     Case 3 
     GetPDFData = oFS.GetFile(strFilename).DateLastModified 
     Case 4 
     GetPDFData = pagecount(strFilename) 
     Case 5 
     GetPDFData = oFS.GetFile(strFilename).Size/1024 & "Kb" 
     Case 6 
     GetPDFData = oFS.GetFile(strFilename).Type 
     Case Else 
     GetPDFData = "ERROR" 
    End Select 
    Set oFS = Nothing 
    DeleteFolder 

End Function 

Sub DownloadFile(myURL As String) 

    Dim TextUrl As String 
    TextUrl = myURL 
    Dim WinHttpReq As Object 
    Set WinHttpReq = CreateObject("Microsoft.XMLHTTP") 
    WinHttpReq.Open "GET", myURL, False 
    WinHttpReq.send 
    myURL = WinHttpReq.responseBody 
    If WinHttpReq.Status = 200 Then 
     Set oStream = CreateObject("ADODB.Stream") 
     oStream.Open 
     oStream.Type = 1 
     oStream.Write WinHttpReq.responseBody 
     oStream.SaveToFile "c:\Temp\pdfTemporal\" & NombreDeArchivo(TextUrl), 2 ' 1 = no overwrite, 2 = overwrite 
     oStream.Close 
    End If 

End Sub 

Sub CreateFolder() 
    Dim Path As String, NombreCarpeta As String 
    Path = "c:\Temp\" 
    NombreCarpeta = "pdfTemporal" 
    If Dir(Path, vbDirectory) <> "" Then 
     If Dir(Path & NombreCarpeta, vbDirectory) = "" Then MkDir Path & NombreCarpeta 
    End If 
End Sub 

Sub DeleteFolder() 
    On Error Resume Next 
    Kill "c:\Temp\pdfTemporal\*.*" 
    RmDir "c:\Temp\pdfTemporal\" 
    On Error GoTo 0 
End Sub 

Public Function NombreDeArchivo(URL As String) As String 

Dim a As String 
Dim esp As String 
esp = " " 
a = URL 
For i = 1 To 500 
esp = esp & " " 
Next i 
a = Replace(a, "/", esp) 
a = Right(a, 500) 
a = Trim(a) 
NombreDeArchivo = a 

End Function 

Public Function pagecount(sfilename As String) As String 
Dim pages As Long 
On Error GoTo a 
Dim nFileNum As Integer 
Dim s As String 
Dim c As Integer 
Dim pos, pos1 As Integer 
pos = 0 
pos1 = 0 
c = 0 
nFileNum = FreeFile 
Open sfilename For Binary Lock Read Write As #nFileNum 

    Do Until EOF(nFileNum) 
    Input #1, s 
    c = c + 1 
    If c <= 10 Then 
     pos = InStr(s, "/N") 
    End If 
    pos1 = InStr(s, "/count") 
     If pos > 0 Or pos1 > 0 Then 
      Close #nFileNum 
      s = Trim(Mid(s, pos, 10)) 
      s = Replace(s, "/N", "") 
      s = Replace(s, "/count", "") 
      s = Replace(s, " ", "") 
      s = Replace(s, "/", "") 
      For i = 65 To 125 
        s = Replace(s, Chr(i), "") 
      Next 
      pages = Val(Trim(s)) 
      If pages < 0 Then 
       pages = 1 
      End If 
      Close #nFileNum 
      pagecount = pages 
      Exit Function 
     End If 
     If c >= 10000 Then 
      GoTo a 
     End If 
    Loop 
    Close #nFileNum 
    pagecount = pages 
    Exit Function 
a: 
    Close #nFileNum 
    pages = 1 
    pagecount = pages 
    Exit Function 
End Function 

Я надеюсь, что вы найдете его полезным, или, по крайней мере, начало

Привет!

+0

Я забыл уточнить: это специальная функция, чтобы преуспеть! –

+0

Николас, Спасибо за работу. Однако дата создания документа и дата изменения дадут неверные данные. Он показывает фактическое время. Есть ли какое-нибудь решение для этого? –

Смежные вопросы