PDF ページ内のテキストの段落やブロックを構成する四角形を取得したいと考えています。
iTextSharp と DataLogics を見てきました。
私ができる最善のことは、個々の単語を見つけることです。ただし、単語が同じテキスト ブロック内にあるかどうかを知る必要があります。
私はC#を使用しています。誰にもアイデアはありますか?
ページ上の各単語のすべての座標を抽出し、それらをグループ化してみてください。
最初に行うことは、行にグループ化することです。これを行うには、すべての順序の単語を含むすべての単語をループし、y0 が他の単語の y1 よりも小さく、y1 が他の単語の y0 よりも大きい単語をグループ化します。これらは線です。
次に、行を段落にグループ化する必要があります。行頭の x 位置は、他のページ幅の 1/25 以内にする必要があります。また、線の y 座標間の距離は、線の高さよりも小さくする必要があります。これらは段落です。
これはJavaですが、pdfからコンテンツを取得し、コンテンツ内のインデックスから値を取得することを扱います。
よくわかりませんが、C# で同様のことを実現できるかもしれません。コンテンツを取得して印刷します。
//create a new reader from the source file
PdfReader reader = new PdfReader(fileName);
//create the file array
RandomAccessFileOrArray raf = new RandomAccessFileOrArray(fileName);
//get the content of the pdf reader (which is the source file)
byte bContent [] = reader.getPageContent(1,raf);
ByteArrayOutputStream bs = new ByteArrayOutputStream();
bs.write(bContent);
//create a string of the contents of the page in order to get the data needed
String contentOf1099 = bs.toString();
if(debug)
{
System.err.println("contentOf1099 = "+contentOf1099);
}
//get the value based off an index
String value = contentOf1099.substring(contentOf1099.indexOf((",contentOf1099.indexOf("155 664 Td"))+1,contentOf1099.indexOf("(",contentOf1099.indexOf("155 664 Td "))+12);