欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

如何使用C#实现PDF和TXT格式互转?Aspose快速搞定

程序员文章站 2022-07-15 23:50:26
...

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#实现PDF和TXT格式互转?Aspose快速搞定

使用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),我们很高兴为您提供查询和咨询。