如何在ASP.NET Core中读取PDF数据
在 .NET Core 应用程序中处理 PDF 文件可能比看起来更棘手。 您可能需要从上传的发票中提取文本,从调查中获取表单数据,或解析表格以用于数据库。 我见过很多项目因为开发者使用了过于复杂的库而被拖慢。 这就是IronPDF派上用场的地方。 它让您无需处理繁琐的依赖关系或编写大量自定义解析代码即可读取和处理 PDF 文档。
无论您是处理简单文本、数字签名还是结构化数据,IronPDF 都让一切变得简单。 本指南向您展示如何在 ASP.NET 中从 PDF 文件读取数据,处理 IFormFile,处理字节数组,甚至将文件返回给用户或将其渲染为 HTML 字符串。 您还可以将其集成到您的解决方案中,在浏览器中显示输出或将其存储在数据库中。
如何在 ASP.NET Core 中设置 IronPDF?
在您的 ASP.NET Core 项目中入门 IronPDF 仅需几分钟。 通过NuGet包管理器控制台使用以下命令安装IronPDF NuGet包:
Install-Package IronPdf
或通过 .NET CLI:
dotnet add package IronPdf安装后,将 IronPDF 命名空间添加到您的类 Program、控制器或服务中:
using IronPdf;using IronPdf;Imports IronPdf如何从 PDF 文件中提取文本?
IronPDF的ExtractAllText方法可以即时访问PDF文档中的所有文本内容。 此方法处理各种文本编码,并保持原始文档的阅读顺序,确保在 ASP.NET Core 应用程序中准确提取 PDF 文件中的数据。
// Load a PDF document
var pdf = PdfDocument.FromFile("document.pdf");
// Extract all text
string allText = pdf.ExtractAllText();
// Extract text from specific page (0-indexed)
string pageText = pdf.ExtractTextFromPage(0); // current page// Load a PDF document
var pdf = PdfDocument.FromFile("document.pdf");
// Extract all text
string allText = pdf.ExtractAllText();
// Extract text from specific page (0-indexed)
string pageText = pdf.ExtractTextFromPage(0); // current pageIRON VB CONVERTER ERROR developers@ironsoftware.comExtractAllText 方法返回一个包含 PDF 中所有可读文本的字符串,保留换行和间距。 对于特定页面的提取,ExtractTextFromPage 允许使用零基索引定位单个页面。 当您提供正确的密码时,这种方法能与加密PDF无缝工作。
这是一个实用的 ASP.NET Core 控制器实现,演示了如何使用此 PDF 从 PDF 文件读取数据:
代码示例
[ApiController]
[Route("api/[controller]")]
public class PdfController : ControllerBase
{
[HttpPost("extract-text")]
public IActionResult ExtractText(IFormFile pdfFile)
{
using var stream = new MemoryStream();
pdfFile.CopyTo(stream);
var pdf = new PdfDocument(stream.ToArray());
var extractedText = pdf.ExtractAllText();
return Ok(new { text = extractedText });
}
}[ApiController]
[Route("api/[controller]")]
public class PdfController : ControllerBase
{
[HttpPost("extract-text")]
public IActionResult ExtractText(IFormFile pdfFile)
{
using var stream = new MemoryStream();
pdfFile.CopyTo(stream);
var pdf = new PdfDocument(stream.ToArray());
var extractedText = pdf.ExtractAllText();
return Ok(new { text = extractedText });
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com此示例代码有效处理上传的 PDF 文件。 IFormFile参数适用于Razor Pages或MVC控制器,而MemoryStream确保光滑处理而无需创建临时文件,从而最终提高响应时间。 开发人员可以下载、保存或处理提取的文本以用于数据库存储、生成报告或在浏览器中显示内容。
如何读取 PDF 表单数据?
PDF 表单包含用户填写的交互字段。 IronPDF通过其全面的表单API简化了提取表单数据,支持所有标准的AcroForm字段类型。您可以轻松提取所有表单字段数据,包括文本框、复选框和内容类型详细信息。
然后可以将响应保存到数据库、返回给用户或集成到您的 ASP.NET 应用程序工作流中。 以下代码示范了如何做到这一点:
[HttpPost("extract-form")]
public IActionResult ExtractForm([FromForm] IFormFile pdfFile)
{
if (pdfFile == null || pdfFile.Length == 0)
{
return BadRequest("No PDF file uploaded.");
}
using var stream = new MemoryStream();
pdfFile.CopyTo(stream);
var pdf = new PdfDocument(stream.ToArray());
var formData = new Dictionary<string, string>();
if (pdf.Form != null)
{
foreach (var field in pdf.Form)
{
formData[field.Name] = field.Value;
}
}
return Ok(new { formFields = formData });
}[HttpPost("extract-form")]
public IActionResult ExtractForm([FromForm] IFormFile pdfFile)
{
if (pdfFile == null || pdfFile.Length == 0)
{
return BadRequest("No PDF file uploaded.");
}
using var stream = new MemoryStream();
pdfFile.CopyTo(stream);
var pdf = new PdfDocument(stream.ToArray());
var formData = new Dictionary<string, string>();
if (pdf.Form != null)
{
foreach (var field in pdf.Form)
{
formData[field.Name] = field.Value;
}
}
return Ok(new { formFields = formData });
}IRON VB CONVERTER ERROR developers@ironsoftware.comExtractForm 端点使用 PdfDocument 的 Form 属性读取上传 PDF 中的交互字段。 每个字段都有一个名称和值,这些值被收集到字典中并作为 JSON 返回。 这使得可以轻松捕获文本框、复选框和其他输入的数据,允许 PDF 表单提交被直接处理和集成到您的应用程序或数据库中。
输出
如何从 PDF 文档中提取表数据?
PDF 中的表格本质上是格式化的文本,需要解析逻辑来提取结构化数据。 IronPDF 提取文本时保留间距,然后您可以解析以从 PDF 文件中读取数据到 ASP.NET 中:
[HttpPost("extract-table")]
public IActionResult ExtractTable([FromForm] IFormFile pdfFile)
{
if (pdfFile == null || pdfFile.Length == 0)
return BadRequest("No PDF file uploaded.");
using var memoryStream = new MemoryStream();
pdfFile.CopyTo(memoryStream);
// Load PDF from byte array
var pdf = new PdfDocument(memoryStream.ToArray());
// Extract all text
string text = pdf.ExtractAllText();
// Split text into lines (rows)
string[] lines = text.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
var tableData = new List<string[]>();
foreach (string line in lines)
{
// Split line into columns using tab character
string[] columns = line
.Split('\t')
.Where(c => !string.IsNullOrWhiteSpace(c))
.ToArray();
if (columns.Length > 0)
tableData.Add(columns);
}
var table = tableData.Select(r => string.Join(" | ", r)).ToList();
return Ok(new { Table = table });
}[HttpPost("extract-table")]
public IActionResult ExtractTable([FromForm] IFormFile pdfFile)
{
if (pdfFile == null || pdfFile.Length == 0)
return BadRequest("No PDF file uploaded.");
using var memoryStream = new MemoryStream();
pdfFile.CopyTo(memoryStream);
// Load PDF from byte array
var pdf = new PdfDocument(memoryStream.ToArray());
// Extract all text
string text = pdf.ExtractAllText();
// Split text into lines (rows)
string[] lines = text.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
var tableData = new List<string[]>();
foreach (string line in lines)
{
// Split line into columns using tab character
string[] columns = line
.Split('\t')
.Where(c => !string.IsNullOrWhiteSpace(c))
.ToArray();
if (columns.Length > 0)
tableData.Add(columns);
}
var table = tableData.Select(r => string.Join(" | ", r)).ToList();
return Ok(new { Table = table });
}IRON VB CONVERTER ERROR developers@ironsoftware.com该代码提取文本并根据间距模式将其拆分为可能的表行。 对于更复杂的表格,您可能需要使用关键字识别表格边界或根据您的特定 PDF 结构实施更复杂的解析逻辑。
此输出可以下载、在浏览器中显示或进行其他信息处理。 您可以集成 CSS 格式或 HTML 字符串渲染以在您的解决方案中动态显示表格。
输出
如何在 ASP.NET Core 中处理上传的 PDF 文件?
处理上传的PDF需要将IFormFile转换为IronPDF可以读取的格式。 这种方法与Razor Pages和MVC控制器无缝配合:
[HttpPost("process-upload")]
public async Task<IActionResult> ProcessPdf([FromForm] IFormFile file)
{
if (file == null || file.Length == 0)
return BadRequest("No PDF file uploaded.");
using var ms = new MemoryStream();
await file.CopyToAsync(ms);
// Load PDF from byte array
var pdf = new PdfDocument(ms.ToArray());
// Extract text and page count
var text = pdf.ExtractAllText();
var pageCount = pdf.PageCount;
return Ok(new
{
text = text,
pages = pageCount
});
}[HttpPost("process-upload")]
public async Task<IActionResult> ProcessPdf([FromForm] IFormFile file)
{
if (file == null || file.Length == 0)
return BadRequest("No PDF file uploaded.");
using var ms = new MemoryStream();
await file.CopyToAsync(ms);
// Load PDF from byte array
var pdf = new PdfDocument(ms.ToArray());
// Extract text and page count
var text = pdf.ExtractAllText();
var pageCount = pdf.PageCount;
return Ok(new
{
text = text,
pages = pageCount
});
}IRON VB CONVERTER ERROR developers@ironsoftware.com这个异步任务确保非阻塞处理,并与对象发送者、事件参数 e 以及标准 .NET 库配合使用。 使用 ReturnFile 并结合 Content-Disposition 头以允许用户安全下载处理后的 PDF 文件。 为了增加安全性,请考虑在处理之前实施文件验证。
结论
IronPDF 使在 ASP.NET Core 和其他 .NET Core 应用程序中读取、提取、处理和保存 PDF 文档变得容易。 无论您是处理表单、表格、纯文本还是数字签名,这个 .NET 库都能将通常需要数小时的任务简化为短短几行代码。 您可以创建、转换、访问和以 HTML、浏览器甚至图像格式显示输出。
从免费试用开始,探索IronPDF在您的ASP.NET Core中的全部功能。 在承诺购买许可证之前,您可以构建和测试您的PDF提取工作流。 对于生产环境,IronPDF 提供适合单个开发人员或大型解决方案的灵活选项。 坦白说,使用 IronPDF 是我发现处理 ASP.NET Core 中 PDF 文件最快的方法之一,无需常见的麻烦。
常见问题解答
在 .NET Core 应用程序中处理 PDF 文件时可能会出现哪些挑战?
由于需要提取文本、获取表单数据,或在没有过于复杂的库的情况下解析表格,处理 .NET Core 中的 PDF 文件可能相当棘手。
IronPDF 如何帮助简化在 ASP.NET 中从 PDF 文件中读取数据?
IronPDF 通过消除不必要的依赖或大量自定义解析代码,简化了 PDF 文档的读取和处理。
在处理 PDF 时避免使用过于复杂的库为什么很重要?
使用过于复杂的库可能会拖慢项目进度并增加开发时间,而像 IronPDF 这样的简单解决方案则会简化流程。
IronPDF 可以从 PDF 文件中提取哪些类型的数据?
IronPDF 可以从 PDF 文件中提取文本、表单数据和表格,使其在各种数据处理需求中具有多功能性。
IronPDF 是否可以用于在 ASP.NET 应用程序中处理上传的发票?
是的,IronPDF 可以高效地读取并处理 ASP.NET 应用程序中上传的发票文本。
使用 IronPDF 时是否需要编写自定义解析代码?
不,IronPDF 允许您在不需要大量自定义解析代码的情况下处理 PDF 文档。
在 .NET Core 应用程序中使用 IronPDF 的好处是什么?
IronPDF 提供了一种简单的方式来读取和处理 PDF 文件,提高了数据处理能力,而无需复杂的依赖关系。
.NET 10 — IronPDF 是否完全兼容它?
是的。IronPDF 的设计完全兼容 .NET 10(以及 .NET 9、8、7、6、5、Core、Standard 和 Framework 4.6.2+),确保您可以在最新的 .NET 平台上运行其所有 PDF 读取和写入功能,而无需特殊的变通方法。
IronPDF 是否支持 .NET 10 中用于读取流式 PDF 内容的最新 API?
是的。在 .NET 10 中,IronPDF 可以使用 Stream 和 MemoryStream 等 API 从字节数组或内存流处理 PDF 数据,从而无需保存临时文件即可读取 PDF。这使其适用于高性能服务器场景,以及在 Web API 中上传或处理 PDF 数据。






