iTextSharpライブラリを使用してPDFからテキストを文字列に読み込もうとしています。.NETのPDFからテキストを読む
iTextSharp.text.pdf.PdfReader pdfReader = new iTextSharp.text.pdf.PdfReader(@"C:\mypdf.pdf");
ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, 1, strategy);
text = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText)));
pdfReader.Close();
Console.WriteLine(text);
これは通常OKに動作しますが、すべての数行が空白のような出力を私に残して、省略されます:「thisismyoutputwithoutwhitespace」。正しく解析するテキストは、そうでないテキストと同じように見えます。同じテキストが一貫して正しく解析されないため、PDF内に何かがあると私は思う。
ありがとうございます!これは非常に役に立ちます。しかし、IsChunkAtBounary()はオーバーライド可能ですか?私は "抽象的な、仮想としてマークされていないので、上書きできません。"私は新しいクラス、LocationTextExtractionStrategyを拡張し、メソッドをオーバーライドしました。 –
これは、JavaからC#への移植エラーと思われます。これが次のリリースで修正されることを確認します。この問題を回避するには、LocationTextExtractionStrategyコードをコピーして、ITextExtractionStrategyインターフェイスを完全に新しい実装にする必要があります。新しい実装では、isChunkAtWordBoundaryメソッドを調整できます。私は知っている...清潔な解決策ではありません。私はあまりCに精通していません。おそらくC#の経験が豊富な人は、より洗練されたソリューションを考えることができます。 – rhens
LocationTextExtractionStrategyのソースコードを入手できない場合は、最新のバージョン(http://sourceforge.net/p/itextsharp/code/HEAD/tree/trunk/src/core/iTextSharp)をご覧ください。 /text/pdf/parser/LocationTextExtractionStrategy.cs – rhens