Na een terecht slotje op mijn vorige poging, bij deze een aangepaste/verduidelijkte versie...
Ik ben inmiddels een tijd bezig met het automatisch laten genereren van thumbnails voor een grote collectie aan pdf-bestanden. Hiervoor heb ik in visual studio 2k5 een tooltje gebouwd dat recursive vanuit een startdirectory alle pdf bestanden afloopt, en hier een thumbnail voor maakt.
Nu werkt het programma prima, en genereert het naar hartelust thumbnails, maar geeft het consequent na 256 files de brui eraan, met een filenotfound exception (zie hieronder voor de exacte foutmelding). Als hierna het programma weer gestart wordt gaat hij rustig verder waar hij gebleven is, dus een fout in een specifiek bestand is het ook niet.
Aangezien 256 natuurlijk in de digitale wereld een zeer kenmerkend getal is, vermoed ik dat het ergens tegen een grens aanloopt. Ik zie inmiddels echter door de bomen het bos niet meer, en google helpt mij ook niet meer verder.
Wat heb ik al geprobeerd:
Debugging - het programma compileert prima, en ook de debug opties geven geen foutmeldingen terug. Op zich is dit ook niet vreemd, aangezien hij succesvol 256 keer door de loop gaat.
Foutzoeken - Alle routines die uit te schakelen zijn zonder invloed te hebben op het primaire proces (het genereren van de thumbnail) uitgeschakeld, en wederom het builden/debuggen proces in. Ook dit mocht niets baten, en hij blijft na 256 processed files eruit klappen.
Zoeken via google - Ook hier na bijna een week zoeken en proberen geen resultaten. Nergens kan ik een referentie vinden aan de limiet waar hij tegen aan lijkt te lopen. Bevriende programmeurs benaderen heeft helaas ook niet gebaat.
Waar denk ik zelf dat het in kan zitten (alhoewel ik daar geen bevestiging over kan vinden)
System.IO.FileNotFoundException: Unable to find the specified file.
at PDFThumbnail.PDFThumbnail.DirSearch(String sDir)
Elke hulp/hint in de goede richting is welkom, ik kom er inmiddels echt niet meer uit.
De specifieke code voor de recursive loop (rest is eruit geknipt):
Ik ben inmiddels een tijd bezig met het automatisch laten genereren van thumbnails voor een grote collectie aan pdf-bestanden. Hiervoor heb ik in visual studio 2k5 een tooltje gebouwd dat recursive vanuit een startdirectory alle pdf bestanden afloopt, en hier een thumbnail voor maakt.
Nu werkt het programma prima, en genereert het naar hartelust thumbnails, maar geeft het consequent na 256 files de brui eraan, met een filenotfound exception (zie hieronder voor de exacte foutmelding). Als hierna het programma weer gestart wordt gaat hij rustig verder waar hij gebleven is, dus een fout in een specifiek bestand is het ook niet.
Aangezien 256 natuurlijk in de digitale wereld een zeer kenmerkend getal is, vermoed ik dat het ergens tegen een grens aanloopt. Ik zie inmiddels echter door de bomen het bos niet meer, en google helpt mij ook niet meer verder.
Wat heb ik al geprobeerd:
Debugging - het programma compileert prima, en ook de debug opties geven geen foutmeldingen terug. Op zich is dit ook niet vreemd, aangezien hij succesvol 256 keer door de loop gaat.
Foutzoeken - Alle routines die uit te schakelen zijn zonder invloed te hebben op het primaire proces (het genereren van de thumbnail) uitgeschakeld, en wederom het builden/debuggen proces in. Ook dit mocht niets baten, en hij blijft na 256 processed files eruit klappen.
Zoeken via google - Ook hier na bijna een week zoeken en proberen geen resultaten. Nergens kan ik een referentie vinden aan de limiet waar hij tegen aan lijkt te lopen. Bevriende programmeurs benaderen heeft helaas ook niet gebaat.
Waar denk ik zelf dat het in kan zitten (alhoewel ik daar geen bevestiging over kan vinden)
- Een limiet in het openen en sluiten van acrobat instanties binnen een enkele thread o.i.d
- Een variabele die niet losgelaten wordt, en dus 'volloopt'
- Een grens in het schrijven van bestanden
System.IO.FileNotFoundException: Unable to find the specified file.
at PDFThumbnail.PDFThumbnail.DirSearch(String sDir)
Elke hulp/hint in de goede richting is welkom, ik kom er inmiddels echt niet meer uit.
De specifieke code voor de recursive loop (rest is eruit geknipt):
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| Sub DirSearch(ByVal sDir As String) ' ...hoop declaraties ' start van de loop Try ' Get list of files to process from the startdir for the first run ' Second and further runs use dir from its own recursive process For Each d In Directory.GetDirectories(sDir) For Each f In Directory.GetFiles(d, "*.pdf") ' ... Veel replaces, en dan het daadwerkelijk aanroepen van acrobat, en het bestand openen pdfDoc = CreateObject("AcroExch.PDDoc") ret = pdfDoc.Open(inputFile) ' ... heleboel dingen doen met de eerste pagina van de pdf ' en verder met het afsluiten van de pdf objects thumbnailGraphics.Dispose() pdfDoc.Close() Marshal.ReleaseComObject(pdfPage) Marshal.ReleaseComObject(pdfRect) Marshal.ReleaseComObject(pdfDoc) Next ' After all files in current dir have been processed, passing on ' Next dir to process. DirSearch(d) Next End Try |