使用IText7和miniExcel处理pdf并输出内容

使用框架:.net 8.0、winform

操作系统:windows 11

编译器:vs 2022

内容:使用iText7miniExcel,介绍如何简单读取pdf文件文字内容,并做处理后输出至excel文件中

秉承着一贯的风格,还是只讲操作,囫囵吞枣就是要讲究一个稳准狠🤓

读取PDF

iText7读取操作十分简单,只要有文件地址即可,代码如下

PdfDocument pdfDoc = new PdfDocument(new PdfReader(yourFilPath));
for (int i = 1; i <= pdfDoc.GetNumberOfPages(); i++)
{
    LocationTextExtractionStrategy strategy = new LocationTextExtractionStrategy();
    new PdfCanvasProcessor(strategy).ProcessPageContent(pdfDoc.GetPage(i));
    string pageText = strategy.GetResultantText();

    //对pdf内容进行处理
}

winform中,一般读取本地文件时都是使用OpenFileDialog控件,这里直接代码中创建。通过该控件读取到文件名及文件地址

using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
    openFileDialog.Title = "选择文件";
    openFileDialog.Multiselect = true;    //是否多选
    openFileDialog.Filter = "所有文件 (*.*)|*.*";    //过滤文件类型

    if (openFileDialog.ShowDialog() == DialogResult.OK)
    {

        foreach (string fileName in openFileDialog.FileNames)
        {
            string fileNameOnly = System.IO.Path.GetFileName(fileName);
            dic.Add(fileNameOnly, fileName);
            lstPaper.Items.Add(fileNameOnly);
        }
    }
}

输出Excel

使用miniExcel进行表格的简单输出也十分简单。

创建输出模型

通过miniExcel所提供的一系列特性,对输出的表格属性进行定义

public class ExportDto
{
    [ExcelColumnWidth(70),ExcelColumnName("名称1")]
    public string Name1 { get; set; }

    [ExcelColumnWidth(100),ExcelColumnName("名称2")]
    public string Name2 { get; set; }
}


private async Task Process(L)
{
    List<ExportDto> values = new List<ExportDto>()
    {
        //将输出内容赋值
    }

    //输出路径
    var preFileName = DateTime.Now.ToString("yyyyMMddHHmmssyyyy");
    string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
    var basePath = Path.Combine(desktopPath, "temp");
    if (!Directory.Exists(basePath)) Directory.CreateDirectory(basePath);
    var filePath = Path.Combine(basePath, $"{preFileName}.xlsx");
    //输出文件
    await MiniExcel.SaveAsAsync(filePath, values);
}

总结

本篇仅仅使用[IText7](Chapter 1: Introducing basic building blocks (itextpdf.com))和[miniExcel](MiniExcel: 简单、高效避免OOM的.NET处理Excel查、写、模版填充数据工具。 (gitee.com))的最基本的功能,在此贴出官方文档。

待笔者继续研习发现好玩的功能后,另行更新之事大概不会

posted @ 2024-08-07 11:52  有了一个点子  阅读(74)  评论(0编辑  收藏  举报