Nous avons souvent été contactés par des développeurs qui souhaitent créer un programme qui recherche des documents dans un dossier, puis convertit automatiquement tous ces documents en PDF. Pour illustrer cela, nous avons créé un petit programme VB.NET qui fait exactement cela.

L'exemple de code source n'est pas parfait. Vous devez ajouter votre propre configuration et gestion des erreurs. Cependant, il sert à montrer comment ce problème peut être résolu en principe.

Lorsque vous exécutez le programme, il recherche les fichiers dans le dossier d'entrée ..\bin\Debug\input et les convertit en documents PDF dans le dossier de sortie ..\bin\Debug\output . En cas de problème, le document d'entrée est copié dans le dossier d'erreur. Si la conversion réussit, le document d'entrée est copié dans le dossier terminé.

    Imports System
    Imports System.Collections.Generic
    Imports System.Linq
    Imports System.Text
    Imports System.IO
    Imports pdf7.PdfWriter
    Imports System.Reflection
    Module Converter
    Sub Main()
    Dim applicationFolder As String = New Uri(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase)).LocalPath
    Dim inputFolder As String = Path.Combine(applicationFolder, "input")
    Dim outputFolder As String = Path.Combine(applicationFolder, "output")
    Dim doneFolder As String = Path.Combine(applicationFolder, "done")
    Dim errorFolder As String = Path.Combine(applicationFolder, "errors")
    If Not Directory.Exists(inputFolder) Then Directory.CreateDirectory(inputFolder)
    If Not Directory.Exists(outputFolder) Then Directory.CreateDirectory(outputFolder)
    If Not Directory.Exists(doneFolder) Then Directory.CreateDirectory(doneFolder)
    If Not Directory.Exists(errorFolder) Then Directory.CreateDirectory(errorFolder)
    Dim printerName As String = PdfUtil.DefaultPrinterName
    Dim inputFileNames As String() = Directory.GetFiles(inputFolder)
    For Each inputFileName As String In inputFileNames
    Dim isError As Boolean = False
    Dim errorMessage As String = Nothing
    Console.Write(String.Format("Printing {0}... ", Path.GetFileName(inputFileName)))
    Dim outputFileName As String = Path.Combine(outputFolder, Path.GetFileName(inputFileName) & ".pdf")
    Dim settings As PdfSettings = New PdfSettings()
    settings.PrinterName = printerName
    settings.SetValue("Output", outputFileName)
    settings.SetValue("ShowSettings", "never")
    settings.SetValue("ShowSaveAS", "never")
    settings.SetValue("ShowProgress", "no")
    settings.SetValue("ShowProgressFinished", "no")
    settings.SetValue("ShowPDF", "no")
    settings.SetValue("ConfirmOverwrite", "no")
    Dim statusFileName As String = Path.Combine(Path.GetTempPath(), "converter_status.ini")
    If File.Exists(statusFileName) Then File.Delete(statusFileName)
    settings.SetValue("StatusFile", statusFileName)
    settings.WriteSettings(PdfSettingsFileType.RunOnce)
    Try
    PdfUtil.PrintFile(inputFileName, printerName)
    PdfUtil.WaitForFile(statusFileName, 60000)
    isError = Not File.Exists(outputFileName)
    Catch ex As Exception
    isError = True
    errorMessage = ex.Message
    End Try
    If isError Then
    File.Move(inputFileName, Path.Combine(errorFolder, Path.GetFileName(inputFileName)))
    Else
    File.Move(inputFileName, Path.Combine(doneFolder, Path.GetFileName(inputFileName)))
    End If
    If isError Then
    If String.IsNullOrEmpty(errorMessage) Then
    Console.WriteLine("Error")
    Else
    Console.WriteLine(errorMessage)
    End If
    Else
    Console.WriteLine("Done")
    End If
    Next
    End Sub
    End Module
    

Des exemples de fichiers source sont inclus dans le fichier ZIP ci-dessous, qui peut être téléchargé ici.

Téléchargements

appendice taille
Téléchargez l'exemple 273.7 KB

Top