当前位置: 代码网 > it编程>编程语言>C# > 通过C#代码轻松提取PDF文本

通过C#代码轻松提取PDF文本

2024年11月25日 C# 我要评论
pdf格式因其跨平台兼容性强、安全性高等特点而被广泛使用。但pdf文档不易编辑,因此提取pdf文档的文本从而进行操作是一个常见的需求。提取pdf中的文本可以帮助我们对pdf文档进行内容再利用,从而制作

pdf格式因其跨平台兼容性强、安全性高等特点而被广泛使用。但pdf文档不易编辑,因此提取pdf文档的文本从而进行操作是一个常见的需求。提取pdf中的文本可以帮助我们对pdf文档进行内容再利用,从而制作新的pdf文档或将内容插入到其他格式的文档中。在.net平台,我们可以使用简单的c#代码轻松实现pdf文档文本的提取。

本文所使用的方法需要用到free spire.pdf for .net,nuget:pm> install-package freespire.pdf

用c#提取pdf文本的操作步骤

库中提供了pdftextextractor类来处理pdf文档的文本提取。我们可以使用页面创建pdftextextractor对象,然后使用pdftextextractor.extracttext()方法来提取页面文本。同时,pdftextextractoptions类能对提取选项进行设置,如设置是否保留布局和设置提取的页面区域。以下是一般操作步骤。

创建pdfdocument对象。

使用pdfdocument.loadfromfile()方法载入pdf文档。

使用pdfdocument.pages[]属性获取指定页面,也可以遍历所有页面。

使用页面创建pdftextextractor对象。

创建pdftextextractoptions对象并设置提取选项。

使用pdftextextractor.extracttext(pdftextextractoptions)方法提取页面文本。

将提取的文本写入文件或用于其他用途。

释放资源。

提取pdf文本不保留文本布局

如果需要不保留文本布局直接提取文本内容,可以将pdftextextractoptions.issimpleextraction属性设置为true来实现。以下是代码示例:

using spire.pdf;
using spire.pdf.texts;
using system.text;

namespace extractpdftext
{
    class program
    {
        static void main(string[] args)
        {
            // 创建pdfdocument对象
            pdfdocument pdf = new pdfdocument();

            // 载入pdf文档
            pdf.loadfromfile("sample.pdf");

            // 创建pdftextextractoptions对象,并设置不保留布局
            pdftextextractoptions extractoptions = new pdftextextractoptions();
            extractoptions.issimpleextraction = true;

            // 创建stringbuilder对象以储存提取的文本
            stringbuilder extractedtext = new stringbuilder();

            // 遍历文档页面
            foreach (pdfpagebase page in pdf.pages)
            {
                // 使用页面创建pdftextextractor对象
                pdftextextractor extractor = new pdftextextractor(page);
                // 提取当前页面的文本
                string text = extractor.extracttext(extractoptions);
                // 将提取到的文本添加到stringbuilder对象
                extractedtext.append(text);
            }

            // 将提取结果写入文本文件
            using (streamwriter writer = new streamwriter("output/extractedpdftext.txt", false, encoding.utf8))
            {
                writer.write(extractedtext.tostring());
            }

            // 释放资源
            pdf.close();
        }
    }
}

结果

保留文本布局提取pdf文本

如果在提取pdf文本时需要保留pdf文本的布局(使用空格填补),则可以直接使用默认的提取选项提取pdf文本。以下是代码示例:

using spire.pdf;
using spire.pdf.texts;
using system.text;

namespace extractpdftextandlayout
{
    class program
    {
        static void main(string[] args)
        {
            // 创建pdfdocument对象
            pdfdocument pdf = new pdfdocument();

            // 载入pdf文档
            pdf.loadfromfile("sample.pdf");

            // 创建文本提取选项
            pdftextextractoptions extractoptions = new pdftextextractoptions();

            // 创建stringbuilder对象以储存提取的文本
            stringbuilder extractedtext = new stringbuilder();

            // 遍历文档页面
            foreach (pdfpagebase page in pdf.pages)
            {
                // 使用页面创建pdftextextractor对象
                pdftextextractor extractor = new pdftextextractor(page);
                // 提取当前页面的文本
                string text = extractor.extracttext(extractoptions);
                // 将提取到的文本添加到stringbuilder对象
                extractedtext.append(text);
            }

            // 将提取结果写入文本文件
            using (streamwriter writer = new streamwriter("output/extractedpdftext.txt", false, encoding.utf8))
            {
                writer.write(extractedtext.tostring());
            }

            // 释放资源
            pdf.close();
        }
    }
}

结果

提取pdf页面指定区域内的文本

我们还可以通过pdftextextractoptions.extractarea属性设置提取区域,从而实现提取页面上指定区域内的文本。以下是代码示例:

using spire.pdf.texts;
using spire.pdf;

using system.drawing;
using system.text;

namespace extractpdftextarea
{
    class program
    {
        static void main(string[] args)
        {
            // 创建pdfdocument对象
            pdfdocument pdf = new pdfdocument();

            // 载入pdf文档
            pdf.loadfromfile("sample.pdf");

            // 获取指定页面
            pdfpagebase page = pdf.pages[0];

            // 创建pdftextextractor对象
            pdftextextractor extractor = new pdftextextractor(page);

            // 创建pdftextextractoptions对象
            pdftextextractoptions extractoptions = new pdftextextractoptions();
            // 设置要提取文本的矩形区域
            extractoptions.extractarea = new rectanglef(80, 100, 250, 150);

            // 提取页面上指定位置的文本
            string extractedtext = extractor.extracttext(extractoptions);

            // 将提取的文本写入文本文件
            file.writealltext("output/extractpdfpageareatext.txt", extractedtext, encoding.utf8);

            // 释放资源
            pdf.close();
        }
    }
}

结果

以上就是通过c#代码轻松提取pdf文本的详细内容,更多关于c#提取pdf文本的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com