我正在使用的庫是 iTextsharp,但我不介意任何可用于將所有文本檔案讀入一個 PDF 的方法。感謝您留下評論和想法。
我正在使用 VB.NET 讀取目錄中的所有文本檔案,并使用 iTextsharp 將它們保存為 PDf。此處顯示的代碼可以生成 PDF,但無法打開這些檔案。系統告訴我 PDF 已被銷毀。
pdf截圖
Dim path As String = TextBox2.Text
Dim searchPattern As String = "*.txt"
Dim doc As Document = New Document()
doc.Open()
For Each fileName As String In Directory.GetFiles(path, "*.txt")
Dim sr As StreamReader = New StreamReader(fileName)
doc.Add(New Paragraph(sr.ReadToEnd()))
Next
doc.Close()
PdfWriter.GetInstance(doc, New FileStream(TextBox2.Text & "\Test.pdf", FileMode.Create))
'Open the Converted PDF File
Process.Start(TextBox2.Text & "\Test.pdf")
MsgBox("Done")
有任何想法嗎?謝謝。
uj5u.com熱心網友回復:
在添加到檔案之前,您必須將流系結到檔案,如下所示:
Dim srcDir = "C:\temp"
Dim searchPattern = "*.txt"
Dim destFile = Path.Combine(srcDir, "SO72581578.pdf")
Using fs = New FileStream(destFile, FileMode.Create)
Dim pdfDoc As New Document(PageSize.A4, 25, 25, 40, 40)
Using writer = PdfWriter.GetInstance(pdfDoc, fs)
pdfDoc.Open()
For Each f In Directory.EnumerateFiles(srcDir, searchPattern)
pdfDoc.Add(New Paragraph(File.ReadAllText(f)))
Next
pdfDoc.Close()
End Using
End Using
uj5u.com熱心網友回復:
您正在到處打開檔案而不是關閉它們。我不確定,但這很可能是你的問題。當您閱讀檔案時,如果您打開 aStreamReader然后關閉它:
For Each fileName As String In Directory.GetFiles(path, "*.txt")
Using sr As New StreamReader(fileName)
doc.Add(New Paragraph(sr.ReadToEnd()))
End Using
Next
更好的是,不要StreamReader自己創建:
For Each fileName As String In Directory.GetFiles(path, "*.txt")
doc.Add(New Paragraph(File.ReadAllText(fileName)))
Next
撰寫檔案時,關閉FileStream之后打開的檔案:
Using fs As New FileStream(TextBox2.Text & "\Test.pdf", FileMode.Create)
PdfWriter.GetInstance(doc, fs)
End Using
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/490842.html
