+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 7 su 7

VBScript da html a pdf in out of memory

  1. #1
    L'avatar di Franco_0412
    Franco_0412 non  in linea Novello
    Ciao a tutti,
    ho creato uno script per convertire file html (nidificati in un nas) in formato pdf; lo script di per se funziona bene, da principio avveniva un certo consumo di risorse, poi mi sono reso conto che i file erano davvero troppi

    Infatti dopo diversi minuti di elaborazione la ram viene allocata totalmente dal processo di acrobat che viene richiamato dallo script per fare la conversione e si ottiene l'errore "Out of memory"

    Posto di seguito il codice:

    Option Explicit
    
    Dim AcroApp, objAVDoc, objFSO, objPDDoc, objFolder, colFiles, objStartFolder, objFile, strFileName, strFileName1, Subfolder, Files, objFileToWrite, StartTime, EndTime, Response
    
    Set AcroApp = CreateObject("AcroExch.App")
    AcroApp.Hide
    
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    
    objStartFolder = "C:\Users\Documents\tmp\"
    
    StartTime = Timer()
    
    ShowSubfolders objFSO.GetFolder(objStartFolder)
    
    Sub ShowSubFolders(Folder)
    
        For Each Subfolder in Folder.SubFolders 
            Set objFolder = objFSO.GetFolder(Subfolder.Path) 
            Set colFiles = objFolder.Files
    
            for each Files in colFiles 
    			strFileName = Mid(Files, InStrRev(Files, "\") + 1)
    			strFileName1 = Left(strFileName, InStrRev(strFileName, ".") - 1)
                if LCase(InStr(1,Files, ".html")) > 1 then 
    				Set objAVDoc = CreateObject("AcroExch.AVDoc")
    				objAVDoc.Open Files, ""
    				Set objPDDoc = objAVDoc.GetPDDoc
    				objPDDoc.Save 1, "C:\Users\Documents\tmp\" & strFileName1 & ".pdf"
    				objPDDoc.Close
    				objAVDoc.Close -1
    			End if
            next
            ShowSubFolders Subfolder 
        Next 
    End Sub
    
    Set objPDDoc = Nothing
    Set objAVDoc = Nothing
    AcroApp.Exit
    Set AcroApp = Nothing
    
    EndTime = Timer()
    Wscript.Echo "Finito: " & FormatNumber(EndTime - StartTime, 2)/60
    
    Qualcuno ha idea di come ovviare al problema dell'errore ?

    Grazie in anticipo
    Franco

  2. #2
    Il messaggio era in moderazione. E' stato accettato.

    Correggo il titolo ... VBScript non WBScript ...
    ℹ️ Leggi di pi su AntonioG ...

  3. #3
    Questa linea

    Set objAVDoc = CreateObject("AcroExch.AVDoc")

    va sicuramente fuori dal ciclo. Non puoi creare tutti questi oggetti AcroExch ... non ha senso ... devi crearne uno solo come per fso.
    ℹ️ Leggi di pi su AntonioG ...

  4. #4
    L'avatar di Franco_0412
    Franco_0412 non  in linea Novello
    Ok far qualche test per vedere se cambia qualcosa, per il momento ti ringrazio Antonio.

    Ciao
    Franco

  5. #5
    L'avatar di Franco_0412
    Franco_0412 non  in linea Novello
    Niente, purtroppo togliendo dal ciclo la creazione dell'oggetto, a circa 230 file generati mi ha gi allocato 8gb di ram
    mi sa che qui bisognerebbe trovare un modo per uscire dal ciclo per settare nulle le variabili ed uscire dall'app per deallocare la ram, ma poi per dovrei ripartire nel punto esatto di dov'ero rimasto; con la nidificazione di cartelle con cui ho a che fare, la vedo dura

    Si potrebbe appoggiarsi anche ad un software di terze parti che fa la conversione da html a pdf, ma solo a patto che questa possa avvenire in background e via batch.

    Se qualcuno ha consigli da darmi, li prendo volentieri

    Franco

  6. #6
    Fermo restando che quella linea va esclusa dal for come ti dicevo, prova ad aggiungere (dopo le due Close)

    Set objPDDoc = Nothing
    Set objAVDoc = Nothing
    ℹ️ Leggi di pi su AntonioG ...

  7. #7
    L'avatar di Franco_0412
    Franco_0412 non  in linea Novello
    Ciao AntonioG,
    la variabile che mi dici di mettere fuori dal ciclo (e su questo sono perfettamente d'accordo con te) objAVDoc, a questo punto per anche "Set objAVDoc = Nothing" deve andare fuori dal ciclo, altrimenti va in errore lo script.

    Comunque ho provato ad inserire dentro al ciclo il nothing dell'altra variabile (objPDDoc)ma non cambia nulla, solito errore di memoria.

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Out of memory con StringBuilder
    Da SebastianoFloridia nel forum C#
    Risposte: 4
    Ultimo Post: 30-03-2019, 20:20
  2. Memory Leak
    Da RGreystorm nel forum C/C++
    Risposte: 5
    Ultimo Post: 20-12-2011, 10:20
  3. on memory
    Da chiabgigi nel forum Pausa caff
    Risposte: 0
    Ultimo Post: 03-09-2009, 12:33
  4. runtime error ' 7 ' out of memory
    Da cris77 nel forum Visual Basic 6
    Risposte: 11
    Ultimo Post: 28-12-2008, 19:27
  5. Shared Memory
    Da positiveoutlook nel forum Design, Internet Marketing e SEO
    Risposte: 3
    Ultimo Post: 29-06-2007, 09:32