PDFからスーパースクリプトとサブスクリプトのテキストを抽出する

スーパースクリプトとサブスクリプトのテキストを抽出する

PDF文書からテキストを抽出することは一般的な作業です。しかし、そのテキストを抽出すると、技術文書や記事に典型的なスーパースクリプトとサブスクリプトが表示されないことがあります。サブスクリプトまたはスーパースクリプトは、通常のテキストの行の下または上に配置された文字、数字、または文字です。通常、他のテキストよりも小さいです。

サブスクリプトとスーパースクリプトは、数式、数学的表現、化合物の仕様で最もよく使用されます。同じテキストの一節に多くのものがある場合、それらを編集するのは難しいです。 最新のリリースの1つで、Aspose.PDF for .NETライブラリはPDFからスーパースクリプトとサブスクリプトのテキストを抽出するサポートを追加しました。

TextFragmentAbsorberクラスを使用すると、見つかったテキストで何でもできるようになります。つまり、全体のテキストを単純に使用できます。次のコードスニペットを試してください:

次のコードスニペットは、Aspose.PDF.Drawingライブラリでも動作します。

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ExtractSuperScriptsAndSubScripts()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "SuperScriptExample.pdf"))
    {
        // Create an absorber
        var absorber = new Aspose.Pdf.Text.TextFragmentAbsorber();
        document.Pages[1].Accept(absorber);
        using (StreamWriter writer = new StreamWriter(dataDir + "SuperScriptExample_out.txt"))
        {
            // Write the extracted text in text file
            writer.WriteLine(absorber.Text);
        }
    }
}

または、TextFragmentsを個別に使用して、座標やサイズでソートするなど、さまざまな操作を行うことができます。

次のコードスニペットは、Aspose.PDF.Drawingライブラリでも動作します。

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ExtractSuperScriptsAndSubScriptsWithTextFragments()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "SuperScriptExample.pdf"))
    {
        // Create an absorber
        var absorber = new Aspose.Pdf.Text.TextFragmentAbsorber();
        document.Pages[1].Accept(absorber);
        using (StreamWriter writer = new StreamWriter(dataDir + "SuperScriptExample_out.txt"))
        {
            foreach (var textFragment in absorber.TextFragments)
            {
                // Write the extracted text in text file
                writer.Write(textFragment.Text);
            }

        }
    }
}