#c# #itext
#c# #itext
Вопрос:
Мой PDF-контент выглядит следующим образом:
Первая страница:
Date Item IN OUT
17-Oct Electrical Fan - 38
with RF895 cable
model XO-8745
56148
17-Oct Electrical Iron 77 -
with ring
model X12358
78418
newline
:
:
:
17-Oct Electrical Fan 77 -
Note: This receipt is computer generated and no signature is required
Вторая страница:
Date Item IN OUT
with RF895 cable
model XO-8745
56148
17-Oct Electrical Iron - 100
with ring
model 54789
XP-859
newline
:
:
:
17-Oct Electrical Iron 17 -
with ring
Note: This receipt is computer generated and no signature is required
Третья страница:
Date Item IN OUT
model X12358
56148
17-Oct Electrical Fan - 38
with RF895 cable
model XO-8745
56148
:
:
:
17-Oct Electrical Fan 108 -
with RF895 cable
model XO-8745
56148
Note: This receipt is computer generated and no signature is required
Я использовал Itextsharp, чтобы объединить данные в 1 строку и поместить их в Excel, поскольку вторая строка находится на следующей странице, я не смог получить нужную строку, потому что она читает PDF только постранично.
следующие коды:
if (File.Exists(theFile.FullName))
{
Console.Write( count " " theFile.FullName);
PdfReader pdfReader = new PdfReader(theFile.FullName);
try
{
DataTable finalTbl = GetTable();
for (int page = 1; page <= pdfReader.NumberOfPages; page )
{
ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy); //Convert to text from PDF
string[] theLines = currentText.Split(Environment.NewLine.ToCharArray());
using (StringReader reader = new StringReader(currentText))
{
string line;
while ((line = reader.ReadLine()) != null)
{
string[] splittedTxt = line.Split(new[] { " " },
StringSplitOptions.RemoveEmptyEntries);
if (splittedTxt.Any())
{
// create a table
}
finalTbl.Rows.Add( //add desired datatable)
}
}
}
}
}
catch
{
throw;
}
finally
{
pdfReader.Close();
}
}
Результат, который я получаю:
17-Oct Electrical Fan with RF895 cable model XO-8745 56148
17-Oct Electrical Iron with ring model X12358 78418 newline
17-Oct Electrical Fan
17-Oct Electrical Iron with ring model 54789 XP-859 newline
17-Oct Electrical Iron with ring
17-Oct Electrical Fan with RF895 cable model XO-8745 56148
17-Oct Electrical Iron with ring model X12358
17-Oct Electrical Fan with RF895 cable model XO-8745 56148
17-Oct Electrical Fan with RF895 cable model XO-8745 56148
есть ли способ сначала прочитать и объединить всю страницу, прежде чем создавать таблицу данных?
Комментарии:
1. PDF не очень хороший источник данных. Вам повезло, что вы извлекли из него текст. И в правильном порядке. Здесь у вас есть дата, которая находится только в первой строке. Возможно, вы сможете вставить только тогда, когда будет найдена новая дата или документ будет завершен.
2. @DragAndDrop — По крайней мере, они не очищают экран!
3. Как насчет объединения
currentText
значений всех страниц в одну большую строку и, в конечном итоге, анализа этой большой строки?