前もって感謝します。
背景:
PDFドキュメントの特定のセクションからデータを抽出するコンソールアプリケーションに取り組んでいます。これを行うには、最初にその pdf を操作する文字列に変換する必要があります。これを行うために、私は iTextSharp に目を向けました。PDFはページごとに2列でレイアウトされているので、SimpleTextExtractionStratgey()を使用しています(iTextSharp.text.pdf.parser.LocationTextExtractionStrategy();を試しましたが、ページレイアウトには効果がありませんでした)。
テキストに変換されるコンテンツの説明:
私が問題を抱えていると思われるページには、ページの横に「ヘッダー」が掲載されています。ヘッダーのあるページは、ドキュメント全体に断続的に散らばっています。
ページ レイアウトのイメージ: http://postimg.org/image/b7i25v0g1/
問題:
ページの列を調べ終わると、そのサイド ヘッダーに移動するようです。次に、サイド ヘッダーのある次のページにジャンプし、それをテキストに変換してから、最初のヘッダーが検出されたページの上部から再開します。
次のようなテキストになります。
ページ 1 コンテンツ
最初のヘッダー
2 番目のヘッダー
ページ 1 コンテンツ
ページ 2 コンテンツ
等
これがpdfです:http://www.filedropper.com/dd35-completeadventurer
私は iTextSharp と結婚していません。この形式のドキュメントをテキストに変換する信頼できる方法が必要なだけです。回避策または代替方法をいただければ幸いです。
static public string ToTxt(string @filePath)
{
string strText = string.Empty;
try
{
PdfReader reader = new PdfReader(filePath);
for (int page = 1; page <= reader.NumberOfPages; page++)
{
Widgets.ProgressBar(page);
//Convert PDF to Text
ITextExtractionStrategy its = new SimpleTextExtractionStrategy(); //iTextSharp.text.pdf.parser.LocationTextExtractionStrategy();
String s = PdfTextExtractor.GetTextFromPage(reader, page, its);
strText = strText + s;
}
reader.Close();
Console.WriteLine("File Extracted");
}
catch (Exception e)
{
Console.WriteLine("Exception: " + e.Message);
}
finally
{
Console.Clear();
}
return strText;
}