Avec VB.NET convertit automatiquement les documents d'un dossier en PDF / Imprimante PDF
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 |