Конвертация всех pdf файлов из каталога - Visual Basic .NET
Формулировка задачи:
роясь на просторах интернета, нашел библиотеку для конвертирования pdf в графические изображения(в данном случае мне нужен jpg) данный пример только для одного файла(конкретно выбранного)
вот код:
библиотеку тоже. вопрос встал вот в чем. как перепилить этот код, для того что бы пользователь указал только директорию, содержащие pdf файлы, нажал на кнопку, и все файлы, находящиеся в этой директории сконвертировались.
заранее большое спасибо!!
Листинг программы
- Imports System.ComponentModel
- Imports System.Text
- Imports Spire.Pdf
- Namespace ToImage
- Partial Public Class Form1
- Inherits Form
- Public Sub New()
- InitializeComponent()
- End Sub
- Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles button1.Click
- 'pdf file
- Dim file As String = "G:\1.pdf"
- 'open pdf document
- Dim doc As New PdfDocument()
- doc.LoadFromFile(file)
- 'save to images
- For i As Integer = 0 To doc.Pages.Count - 1
- Dim fileName As String = String.Format("Sample-img-{0}.jpg", i)
- Using image As Image = doc.SaveAsImage(i)
- image.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg)
- System.Diagnostics.Process.Start(fileName)
- End Using
- Next
- doc.Close()
- End Sub
- End Class
- End Namespace
Решение задачи: «Конвертация всех pdf файлов из каталога»
textual
Листинг программы
- Imports System.ComponentModel
- Imports System.Text
- Imports Spire.Pdf
- Public Class Form1
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- If BackgroundWorker1.IsBusy = False Then
- ProgressBar1.Visible = True
- Label2.Visible = True
- Label3.Visible = True
- Label4.Visible = True
- Label6.Visible = True
- Label7.Visible = True
- BackgroundWorker1.RunWorkerAsync()
- Else
- Exit Sub
- End If
- End Sub
- Dim namefile As String = ""
- Private Sub BackgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
- Dim startpath As String = ""
- For i = 0 To ListBox1.Items.Count - 1
- Label7.Text = i + 1
- startpath = FileIO.FileSystem.GetFileInfo(ListBox1.Items.Item(i)).DirectoryName 'находим каталог откуда родом этот pdf
- namefile = System.IO.Path.GetFileNameWithoutExtension(ListBox1.Items.Item(i)) 'находим имя pdf
- Path_convert = startpath & "" & namefile ' собираем путь для нового каталога для сохранения jpg
- If System.IO.Directory.Exists(Path_convert) = False Then 'если его нет, то создаем
- System.IO.Directory.CreateDirectory(Path_convert)
- End If
- convert_pdf(ListBox1.Items.Item(i), Path_convert)
- Next
- End Sub
- Dim Path_convert As String = ""
- Sub convert_pdf(ByVal path As String, ByVal startpath As String) ' процедура для конвертирования
- 'pdf file
- Dim file As String = path
- 'open pdf document
- Dim doc As New PdfDocument()
- doc.LoadFromFile(file)
- 'save to images
- Label4.Text = doc.Pages.Count
- For i As Integer = 0 To doc.Pages.Count - 1
- Label2.Text = i + 1
- Dim fileName As String = String.Format(namefile & "_{0}.jpg", i + 1)
- Using image As Image = doc.SaveAsImage(i)
- image.Save(startpath & "" & fileName, System.Drawing.Imaging.ImageFormat.Jpeg)
- 'System.Diagnostics.Process.Start(fileName)
- End Using
- Next
- doc.Close()
- doc.Dispose()
- End Sub
- Dim k As Integer = 0
- Dim path As String = ""
- Sub search() ' процедура поиска файлов
- On Error Resume Next
- ListBox1.Items.Clear()
- k = 0
- For Each foundFile As String In My.Computer.FileSystem.GetFiles(path, FileIO.SearchOption.SearchAllSubDirectories, "*.pdf")
- ListBox1.Items.Add(foundFile)
- k = k + 1
- Label1.Text = k
- Next
- If ListBox1.Items.Count > 0 Then
- ListBox1.SelectedIndex = 0
- End If
- End Sub
- Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
- Dim SFD As New FolderBrowserDialog ' выбираем каталог
- If SFD.ShowDialog = Windows.Forms.DialogResult.OK Then
- TextBox1.Text = SFD.SelectedPath
- path = SFD.SelectedPath
- search()
- Else
- Exit Sub
- End If
- End Sub
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- Label2.Visible = False
- Label3.Visible = False
- Label4.Visible = False
- Label6.Visible = False
- Label7.Visible = False
- ProgressBar1.Visible = False
- ProgressBar1.Style = ProgressBarStyle.Marquee
- CheckForIllegalCrossThreadCalls = False
- End Sub
- Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
- ProgressBar1.Visible = False
- Label2.Visible = False
- Label3.Visible = False
- Label4.Visible = False
- Label6.Visible = False
- Label7.Visible = False
- MsgBox("Все файлы успешно конвертированы")
- End Sub
- End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д