Если тысячи разделены такими пространствами, как < /p>
Код: Выделить всё
Total amount: 1 000.23 EUR
В поле «Номер файла PDF» - это единый объект. Как извлечь номер как одиночную строку? < /P>
Это мой код: < /p>
Код: Выделить всё
async Task ExtractTextPdfPigAsync(MemoryStream pdfStream)
{
pdfStream.Position = 0;
StringBuilder tulem = new();
using UglyToad.PdfPig.PdfDocument document = UglyToad.PdfPig.PdfDocument.Open(pdfStream, new UglyToad.PdfPig.ParsingOptions() { SkipMissingFonts = true });
foreach (UglyToad.PdfPig.Content.Page page in document.GetPages())
GetWordsInReadingOrder(page, tulem);
return tulem.ToString();
}
///
/// Returns a sequence of words in the order they appear in the PDF, based on an unsupervised reading order detector.
///
///
The page to extract words from.
/// A sequence of words in reading order.
public static void GetWordsInReadingOrder(Page page, StringBuilder builder)
{ // Extract all words from the page using the NearestNeighbourWordExtractor
List words = page.GetWords().ToList();
List sorted = (from r in page.GetWords()
orderby r.BoundingBox.Bottom, r.BoundingBox.Left
select r).ToList();
if (sorted.Count == 0)
return;
List lines = [];
const double rowHeight = 10;
double lnLastTop = 0;
int lnLastRow = 1;
double csvReaVpos = sorted.First().BoundingBox.Bottom;
foreach (Word r in sorted)
{
if (r.BoundingBox.Bottom >= lnLastTop + (0.5 * rowHeight) || r.BoundingBox.Bottom - csvReaVpos > rowHeight)
{
++lnLastRow;
csvReaVpos = r.BoundingBox.Bottom;
}
lnLastTop = r.BoundingBox.Bottom;
lines.Add(new WordsWithLines()
{
RowNo = lnLastRow,
WordElement = r
});
}
IOrderedEnumerable wordsList = from r in lines
orderby r.RowNo descending, r.WordElement.BoundingBox.Left
select r;
int rowNo = wordsList.First().RowNo;
bool first = true;
foreach (WordsWithLines word in wordsList)
{
if (rowNo != word.RowNo)
{
builder.AppendLine();
first = true;
rowNo = word.RowNo;
}
if (!first)
builder.Append(' ');
builder.Append(word.WordElement.Text);
first = false;
}
}
sealed class WordsWithLines
{
public int RowNo;
public Word WordElement;
}
Если какой -то другой свободный пакет позволяет это использовать вместо pdfpig.
Подробнее здесь: https://stackoverflow.com/questions/796 ... n-from-pdf
Мобильная версия