C# 如何读取和显示PDF?
2022-12-23
读取显示PDF需要借助PDF库,国内Spire.PDF可以读取PDF内容,包括文本,图片以及表格,你可以通过NuGet搜索安装
读取文本内容:
using Spire.Pdf;
using Spire.Pdf.Texts;
using System.IO;
using System.Text;
namespace ExtractText
{
internal class Program
{
static void Main(string[] args)
{
//创建一个 PdfDocument 对象
PdfDocument doc = new PdfDocument();
//加载PDF文件
doc.LoadFromFile("AI数字人.pdf");
StringBuilder sb = new StringBuilder();
foreach (PdfPageBase page in doc.Pages)
{
//创建一个PdfTextExtractot 对象
PdfTextExtractor textExtractor = new PdfTextExtractor(page);
//创建一个 PdfTextExtractOptions 对象
PdfTextExtractOptions extractOptions = new PdfTextExtractOptions();
//将 isExtractAllText 设置为true
extractOptions.IsExtractAllText = true;
//从页面中提取文本
sb.AppendLine(textExtractor.ExtractText(extractOptions));
}
//将提取的文本写入 TXT 文件
File.WriteAllText("提取指定页面文本.txt", sb.ToString());
}
}
}
读取表格内容:
using Spire.Pdf;
using Spire.Pdf.Utilities;
using System.IO;
using System.Text;
namespace ExtractTable{
class Program
{
static void Main(string[] args)
{
//实例化PdfDocument类的对象
PdfDocument pdf = new PdfDocument();
//加载PDF文档
pdf.LoadFromFile("sample.pdf");
//创建StringBuilder类的对象
StringBuilder builder = new StringBuilder();
//实例化PdfTableExtractor类的对象
PdfTableExtractor extractor = new PdfTableExtractor(pdf);
//声明PdfTable类的表格数组
PdfTable[] tableLists;
//遍历PDF页面
for (int pageIndex = 0; pageIndex < pdf.Pages.Count; pageIndex++)
{
//从页面提取表格
tableLists = extractor.ExtractTable(pageIndex);
//判断表格列表是否为空
if (tableLists != null && tableLists.Length > 0)
{
//遍历表格
foreach (PdfTable table in tableLists)
{
//获取表格中的行和列数
int row = table.GetRowCount();
int column = table.GetColumnCount();
//遍历表格行和列
for (int i = 0; i < row; i++)
{
for (int j = 0; j < column; j++)
{
//获取行和列中的文本
string text = table.GetText(i, j);
//写入文本到StringBuilder容器
builder.Append(text + " ");
}
builder.Append("\r\n");
}
}
}
}
//保存提取的表格内容为.txt文档
File.WriteAllText("ExtractedTable.txt", builder.ToString());
}
}
}
2022-12-14 · 百度认证:北京惠企网络技术有限公司官方账号