如何使用C#实现PDF和TXT格式互转?Aspose快速搞定
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),我们很高兴为您提供查询和咨询。
上一篇: [pat乙级] 1054 求平均值
下一篇: bmp文件详解