ハイ
ITextSharp を使用して、PDF ファイルをテキスト出力に解析しています。PDFに下付き文字または上付き文字が含まれているかどうかをキャッチできるかどうかを知りたいのですが、ITextSharpまたは他のライブラリを使用してPDFで通常の文字と上付き文字を区別する方法を知っている人はいますか?
ありがとう
ハイ
ITextSharp を使用して、PDF ファイルをテキスト出力に解析しています。PDFに下付き文字または上付き文字が含まれているかどうかをキャッチできるかどうかを知りたいのですが、ITextSharpまたは他のライブラリを使用してPDFで通常の文字と上付き文字を区別する方法を知っている人はいますか?
ありがとう
免責事項: 実際にはこれについての証拠はありませんが...
上付き/下付きは通常のテキストと同じであると思います。小さいだけで同じフォントです。たまたま他のテキストと同じ行にある場合、スーパー/サブ スクリプトは上げ下げされますが、PDF などのレイアウト指向の形式の明示的なメタ タグではそれを検出できません。
言い換えれば、ヒューリスティックによって上付き/下付きを識別する必要があると思います.「同じ」行の他のテキストと比較して、小さくて垂直方向にずれたテキストを見つけます. それが簡単にできるかどうかは、PDF の作成者と ITextSharp の詳細に依存します。「線」を識別することさえ必ずしも簡単ではないからです。
ここでは、カスタム ロジックを少し実装する必要があります。PDF には上付き文字/下付き文字を示すタグはなく、別のベースライン上にあるだけです。このような場合、ベースライン (身長とともに) に注意する必要があります。簡単な擬似コード:
//input -> curText
if(curText.Baseline > previousText.Baseline &&
curText.Baseline < (prevText.Baseline + prevText.Height))
{
// This is most likely superscript //
}
else if(curText.Baseline < previousText.Baseline &&
prevText.Baseline < (curText.Baseline + curText.Height))
{
// This is most likely subscript //
}
else
{
// This is probably normal text //
}
このソリューションでは、完全に整理されていない PDF ファイルの性質を整理する必要があります。過去に、特定の y 座標のすべてのテキストを配列に整理するためのカスタム クラスの List<> を使用しました。このようなものを使用すると、別々の線を比較して、ペイントしたり送信したりする前に、必要な作業を行うことができます。