我试图编写一个独立的Windows应用程序,或者使用C#或VB .net编写一个VSTO外接程序,它可以读取一个PDF文件并从中提取数据。我得到的文件是从州数据库中创建的交通事故记录列表,每一次事故记录都包括环境数据、事故细节和涉及各方的信息。
在我收到的PDF清单中,每一次坠机的所有数据都被一个方框包围,因此为了获取数据,我设想首先检测记录周围的正方形,然后从该方块的左上角或右上坐标开始,大多数不同的数据总是位于相同的相对位置。但是正方形的大小并不总是一样的,因为可能会有多方参与,每个方都列在每个记录的底部。当解析器到达盒子底部的y坐标时,我会指示解析器查找下一个崩溃记录。可以有其他策略来提取数据,但这种方法似乎是目前最容易编码的方法。信息已经是可搜索的文本,所以我不需要OCR来数字化数据。我只需要把它放在Excel电子表格或其他类型的文件中,这些文件可以被Excel读取以进行计算。我不需要API,只要它将与Visual集成。
这纯粹是为了帮助我自己的工作,我不打算出售我的产品使用SDK,所以版税不是一个问题。我不是专业的软件开发人员,但我学习了C#和VB .net,这样我就可以自动化重复或迭代计算,并执行其他与工程相关的普通任务。我不需要创建PDF,也不需要编辑它们,我只需要读取数据。因为我不打算直接从这个项目中赚到钱,所以我不能为只用于解析这些PDF文件的SDK支付年度许可证或一次性费用。我不期望免费得到它,如果它的成本对我有限的使用来说是合理的,我愿意为此付出代价。
我的预算大概在250美元以下。对我来说,不用手工解析事故历史是很有价值的。我会接受更高的成本,但不会更高。
有什么建议吗?
发布于 2023-04-25 10:51:04
您可以尝试同步PDF库
这种高性能和功能丰富的.NET PDF框架不依赖Adobe。它有一个PDF创建和编辑库,允许您在任何.NET应用程序中以编程方式创建、读取和编辑PDF文件。它提供PDF查看器控件来查看、查看和打印PDF文件。它强大的转换API使其易于将HTML、Word、Excel、PowerPoint和图像转换为PDF格式。
https://www.syncfusion.com/document-processing/pdf-framework/net
Syncfusion还提供了免费的社区许可证。https://www.syncfusion.com/products/communitylicense
注:我在同步公司工作。
发布于 2023-04-25 18:20:19
既然您提到Excel,我想您也有Office,或者至少WORD,在这种情况下,您可以使用word的pdf函数,并在您的.net代码中使用它们。下面是一个使用VBA将pdf数据输入excel的示例,没有外部程序(除了office本身)。这是为了从表中获取数据,而不是从框中获取数据(我认为这些数据需要使用形状而不是表格,或者可能是.Pages(1).Rectangles.Item(n).Range)。
Sub read_pdf_document_tables()
Const PDFPath As String = "C:\Users\xxxxxx\Documents\Book2.pdf"
Dim sht As Worksheet
Dim WDoc As Word.Document
Dim WApp As Word.Application
Dim i As Long, r As Long, c As Long
Dim rng As Range, t As Word.Table
Set WApp = CreateObject("Word.Application")
WApp.Visible = True
Set WDoc = WApp.Documents.Open(PDFPath, ConfirmConversions:=False, ReadOnly:=False)
Set sht = Sheets("Temp")
Set rng = sht.Range("A1")
sht.Activate
For Each t In WDoc.Tables
t.Range.Copy
rng.Select
rng.Parent.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False
With rng.Resize(t.Rows.Count, t.Columns.Count)
.Cells.UnMerge
Cells.Columns.AutoFit
Cells.Rows.AutoFit
End With
Set rng = rng.Offset(t.Rows.Count + 2, 0)
Next t
WDoc.Close
WApp.Quit
End Subhttps://softwarerecs.stackexchange.com/questions/86879
复制相似问题