PDF文件之所以受欢迎,是因为它们支持文本,图像,动画,视频和许多其他注释。
但是,文本是大多数PDF文档中最重要的部分。在本文中,我们将使用C#.NET将PDF转换为TXT文件,并将TXT文件转换为PDF格式。本文内容包括:
- 使用C#或VB.NET将PDF转换为TXT文件而不进行格式化
- 使用C#或VB.NET使用格式化例程将PDF转换为TXT文件
- 使用C#或VB.NET以编程方式将TXT文件转换为PDF
目前,.NET版Aspose.PDF升级到v20.9版,增强TIFF到PDF的转换性能,修复LZW解码器失败等诸多Bug问题,感兴趣的朋友可点击下载最新版。
使用C#或VB.NET将PDF转换为TXT文件而不进行格式化
首先,我们将无需任何格式设置例程即可将PDF转换为文本。文本内容将按原样转换。因此,从输入的PDF文件开始,输出文本将不遵循任何格式。需要按照以下步骤将PDF高效且可靠地转换为TXT。
- 加载输入的PDF文档
- 初始化StringBuilder类的实例
- 遍历PDF文档的每一页
- 使用TextDevice和Raw模式读取文本
- 将输出文本另存为TXT文件
下面的代码段显示了如何在.NET Framework中使用C#或VB将PDF转换为TXT文件:
// Open document Document pdfDocument = new Document(dataDir + "MultiColumnPdf.pdf"); StringBuilder builder = new StringBuilder(); // String to hold extracted text string extractedText = ""; foreach (Page pdfPage in pdfDocument.Pages) { using (MemoryStream textStream = new MemoryStream()) { // Create text device TextDevice textDevice = new TextDevice(); // Set different options TextExtractionOptions options = new TextExtractionOptions(TextExtractionOptions.TextFormattingMode.Raw); textDevice.ExtractionOptions = options; // Convert the page and save text to the stream textDevice.Process(pdfPage, textStream); // Close memory stream textStream.Close(); // Get text from memory stream extractedText = Encoding.Unicode.GetString(textStream.ToArray()); } builder.Append(extractedText); } dataDir = dataDir + "PDF_to_TXT_Raw.txt"; // Save the text file File.WriteAllText(dataDir, builder.ToString());
使用C#或VB.NET使用格式化例程将PDF转换为TXT文件
可以按照以下步骤,使用C#轻松地将PDF文档的文本内容呈现为TXT文件:
- 加载源PDF文件
- 启动一个字符串变量
- 使用TextFormattingMode.Pure通读每个页面
- 保存转换后的TXT文件
以下代码段显示了如何使用C#或VB.NET语言将PDF格式转换为TXT文件:
// Open document Document pdfDocument = new Document(dataDir + "MultiColumnPdf.pdf"); StringBuilder builder = new StringBuilder(); // String to hold extracted text string extractedText = ""; foreach (Page pdfPage in pdfDocument.Pages) { using (MemoryStream textStream = new MemoryStream()) { // Create text device TextDevice textDevice = new TextDevice(); // Set different options TextExtractionOptions options = new TextExtractionOptions(TextExtractionOptions.TextFormattingMode.Pure); textDevice.ExtractionOptions = options; // Convert the page and save text to the stream textDevice.Process(pdfPage, textStream); // Close memory stream textStream.Close(); // Get text from memory stream extractedText = Encoding.Unicode.GetString(textStream.ToArray()); } builder.Append(extractedText); } dataDir = dataDir + "PDF_to_TXT_Pure.txt"; // Save the text file File.WriteAllText(dataDir, builder.ToString());
视觉比较PURE和RAW文本转换
以下屏幕快照是我们刚刚讨论的两种方法的直观比较。您会注意到,纯模式(最右边的窗口)以与PDF文件(最左边的窗口)相同的格式显示文本。
使用C#或VB.NET以编程方式将TXT文件转换为PDF
TXT文件通常包含大量文本内容。您可以使用Aspose.PDF for .NET API轻松地将TXT文件转换为PDF文件。只需按照以下步骤执行文本到PDF的转换:
- 创建一个TextReader类的实例
- 初始化PDF文档并添加空白页
- 实例化TextBuilder对象
- 从输入的TXT文件中读取每一行文本
- 保存输出PDF文件
下面的代码段说明了如何使用C#或VB.NET语言以编程方式将包含文本的TXT文件转换为PDF文档:
// Read input TXT file System.IO.TextReader tr = new StreamReader(dataDir + "Test.txt", Encoding.UTF8, true); // Initialize new Document Document doc = new Document(); // Add blank page Page page = doc.Pages.Add(); String strLine; // Initiate TextBuilder object TextBuilder builder = new TextBuilder(page); double x = 100; double y = 100; while ((strLine = tr.ReadLine()) != null) { TextFragment text = new TextFragment(strLine); text.Position = new Position(x, y); if (y >= page.PageInfo.Height - 72) { y = 100; page = doc.Pages.Add(); builder = new TextBuilder(page); } else { y += 15; } builder.AppendText(text); } // Save output PDF file doc.Save(dataDir + "TexttoPDF.pdf"); tr.Close();
如果您有任何疑问或需求,请随时加入Aspose技术交流群(642018183),我们很高兴为您提供查询和咨询。
来源:oschina
链接:https://my.oschina.net/u/4087915/blog/4665876