gpt4 book ai didi

c# - 仅从 PDF 文档中获取字数

转载 作者:行者123 更新时间:2023-11-30 20:08:46 24 4
gpt4 key购买 nike

我希望以编程方式从 pdf 文档中获取字数统计。

我看过 PDFSharp,但对于我想做的事情来说它太笨重了。我无权访问服务器,所以我无法安装 acrobat 来访问他们的 api 或任何东西。我愿意在 iTextSharp 或其他工具中完成。

最佳答案

iTextSharp 有一个很棒的 PdfTextExtractor 对象,它将为您提供所有文本(假设 @Rob A 指出它实际上存储为文本而不是图像或纯矢量)。获得所有文本后,一个简单的正则表达式将为您提供字数统计。

下面的代码应该可以为您完成。 (在 iText 5.1.1.0 上测试)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using iTextSharp.text.pdf.parser;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
string InputFile = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Input.pdf");

//Get all the text
string T = ExtractAllTextFromPdf(InputFile);
//Count the words
int I = GetWordCountFromString(T);

}

public static string ExtractAllTextFromPdf(string inputFile)
{
//Sanity checks
if (string.IsNullOrEmpty(inputFile))
throw new ArgumentNullException("inputFile");
if (!System.IO.File.Exists(inputFile))
throw new System.IO.FileNotFoundException("Cannot find inputFile", inputFile);

//Create a stream reader (not necessary but I like to control locks and permissions)
using (FileStream SR = new FileStream(inputFile, FileMode.Open, FileAccess.Read, FileShare.Read))
{
//Create a reader to read the PDF
iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(SR);

//Create a buffer to store text
StringBuilder Buf = new StringBuilder();

//Use the PdfTextExtractor to get all of the text on a page-by-page basis
for (int i = 1; i <= reader.NumberOfPages; i++)
{
Buf.AppendLine(PdfTextExtractor.GetTextFromPage(reader, i));
}

return Buf.ToString();
}
}
public static int GetWordCountFromString(string text)
{
//Sanity check
if (string.IsNullOrEmpty(text))
return 0;

//Count the words
return System.Text.RegularExpressions.Regex.Matches(text, "\\S+").Count;
}
}
}

关于c# - 仅从 PDF 文档中获取字数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6734374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com