humanemulator.net — справка. Продукт, демо и покупка — на хуманэмулятор.рф | Демо | Купить | API | Changelog

get_text_blocks_odt

get_text_blocks_odt($file_path,$start_block_index=-1,$length=10,$timeout=300); - OpenDocument Text '.odt'

Функция на вход принимает параметры:

  • $file_path
  • $start_block_index -1
  • $length , 10
  • $timeout ,

    :
  • null

    Пример использования
    <?php
    // Scenario: Extract text blocks from an ODT document, all at once or in chunks
    
    $xhe_host = getenv("RPABOT_HOST_URL");
    
    // подключим функциональные объекты, если еще не подключен
    if (!isset($path)){
        // Path to the init.php file for connecting to the XHE API
        $path = "../../../Templates/init.php";
        // Including init.php grants access to all classes and functionality for working with the XHE API
        require($path);
    }
    
    // начало
    echo "\n<span >libreOffice->".basename (__FILE__)."</span>\n";
    
    // Example 1: Get all text blocks from the ODT file
    echo "\n\nExample 1: Getting all text blocks\n";
    $filePath = "test/test_style.odt";
    $blocks = SYSTEM::$libreOffice->get_text_blocks_odt($filePath);
    if ($blocks) {
        $blocksCount = count($blocks);
        echo("\n Получено блоков штук: " . $blocksCount);
        for ($k = 0; $k < $blocksCount; $k++) {
            $text = $blocks[$k];
            echo("\n" . $text);
        }
    }
    else{
        echo("\nПроизошла ошибка");
    }
    
    echo("\n\n");
    
    // Example 2
    
    // Порция текстовых блоков для чтения в одну итерацию
    $chunkSize = 5;
    
    $filePath = "test/test_style.odt";
    
    // Сколько порций блоков нужно прочитать
    $chunkCount = 10;
    echo("\n\nExample 2. Прочитать содержимое файла odt порциями. Всего $chunkCount порций по $chunkSize штук текстовых блоков в порции.");
    
    // Индекс стартовый
    $offset = 0;
    for ($m = 0; $m < $chunkCount; $m++) {
        echo("\n Порция текстовых блоков #" . ($m  + 1) . ":  $chunkSize штук стартовый индекс $offset");
    
        $chunkBlocks = SYSTEM::$libreOffice->get_text_blocks_odt($filePath, $offset, $chunkSize);
        if ($chunkBlocks) {
            $blocksCount = count($chunkBlocks);
            echo("\n");
    		echo("\n Получено штук: " . $blocksCount);
    		echo("\n\n");
            for ($k = 0; $k < $blocksCount; $k++) {
                // Обрезать блок для вывода в консоль
                $text = $chunkBlocks[$k];
                echo("\n" . $text);
            }
        }
        else{
    		echo("\nБлоки кончились или произошла ошибка");
    		break;
        }
        $offset += $chunkSize;
        echo("\n\n");
    }
    
    // Example 3: Read all text blocks in chunks of 50 until the end
    echo("\n\nExample 3: Read all text blocks in chunks of 50 until the end\n");
    $filePath = "test/test_style.odt";
    $chunkSize = 50;
    $offset = 0;
    $totalBlocksRead = 0;
    $chunkNumber = 1;
    
    echo("Reading all text blocks with chunk size: $chunkSize\n");
    
    while (true) {
        echo("\nProcessing chunk #$chunkNumber with offset: $offset\n");
        
        $chunkBlocks = SYSTEM::$libreOffice->get_text_blocks_odt($filePath, $offset, $chunkSize);
        
        if ($chunkBlocks && count($chunkBlocks) > 0) {
            $blocksInChunk = count($chunkBlocks);
            $totalBlocksRead += $blocksInChunk;
            
            echo("Received $blocksInChunk blocks in chunk #$chunkNumber\n");
            echo("Total blocks read so far: $totalBlocksRead\n");
            
            // Display first and last block of the chunk
            if ($blocksInChunk > 0) {
                echo("First block in chunk: " . $chunkBlocks[0] . "\n");
                if ($blocksInChunk > 1) {
                    echo("Last block in chunk: " . $chunkBlocks[$blocksInChunk - 1] . "\n");
                }
            }
            
            // If we received fewer blocks than the chunk size, we've reached the end
            if ($blocksInChunk < $chunkSize) {
                echo("\nReached the end of document. Last chunk had $blocksInChunk blocks.\n");
                break;
            }
            
            $offset += $chunkSize;
            $chunkNumber++;
        } else {
            echo("\nNo more blocks found or error occurred.\n");
            break;
        }
        
        echo("\n");
    }
    
    echo("\nFinished reading all text blocks. Total blocks read: $totalBlocksRead\n");
    
    // Quit the application
    WINDOW::$app->quit();
    ?>
    # Example for get_text_blocks_odt function
    #
    # This example demonstrates how get text blocks from ODT file
    # using the XHELibreOffice class.
    
    import sys
    sys.path.insert(0, '../../../Templates PY/')
    
    xhe_host = "127.0.0.1:7013"
    from xweb_human_emulator import libreOffice, app, echo
    
    # начало
    echo("<hr><font color=blue>libreOffice->get_text_blocks_odt</font><hr>")
    
    # Example 1: Get all text blocks from the ODT file
    echo("Example 1: Getting all text blocks\n")
    filePath = "test/test_style.odt"
    blocks = libreOffice.get_text_blocks_odt(filePath)
    if blocks != None:
        blocksCount = len(blocks)
        echo(f"\n Получено блоков штук: {blocksCount}")
        for k in range(0, blocksCount):
            text = blocks[k]
            echo(f"\n {text}")
    else:
        echo("\nПроизошла ошибка")
    
    echo("\n\n")
    
    # Example 2: Get text blocks by portions
    
    # Порция текстовых блоков для чтения в одну итерацию
    chunkSize = 5
    
    filePath = "test/test_style.odt"
    
    # Сколько порций блоков нужно прочитать
    chunkCount = 10
    echo("\nExample 2. Прочитать содержимое файла odt порциями. Всего chunkCount порций по chunkSize штук текстовых блоков в порции.")
    
    # Индекс стартовый
    offset = 0
    for m in range(0, chunkCount):
        echo("\n Порция текстовых блоков #" + str(m  + 1)  + f":  chunkSize штук стартовый индекс {offset}")
    
        chunkBlocks = libreOffice.get_text_blocks_odt(filePath, offset, chunkSize)
        if chunkBlocks:
            blocksCount = len(chunkBlocks)
            echo("\n")
            echo(f"\n Получено штук: {blocksCount}" )
            echo("\n\n")
            for k in range(0, blocksCount):
                # Обрезать блок для вывода в консоль
                text = chunkBlocks[k]
                echo(f"\n {text}")
        else:
            echo("\nБлоки кончились или произошла ошибка")
            break
    
        offset += chunkSize
        echo("\n\n")
    
    
    # Quit
    app.quit()
    using System;
    using Collections.Generic;
    
    // Scenario: Extract text blocks from an ODT document, all at once or in chunks
    
    namespace XHELibreOfficeExamples
    {
        class GetTextBlocksOdtExample
        {
            static void Main(string[] args)
            {
                string xheHost = "127.0.0.1:7010";
    
                // Initialize XHE API connection
                // In C#, you would initialize the XHE API client here
                // This is equivalent to including init.php in PHP
    
                // Start
                Console.WriteLine("\nlibreOffice->get_text_blocks_odt.cs");
    
                // Example 1: Get all text blocks from the ODT file
                Console.WriteLine("\n\nExample 1: Getting all text blocks");
                string filePath = "test/test_style.odt";
                List<string> blocks = libreOffice.get_text_blocks_odt(filePath);
                if (blocks != null)
                {
                    int blocksCount = blocks.Count;
                    Console.WriteLine($"\n Получено блоков штук: {blocksCount}");
                    for (int k = 0; k < blocksCount; k++)
                    {
                        string text = blocks[k];
                        Console.WriteLine($"\n{text}");
                    }
                }
                else
                {
                    Console.WriteLine("\nПроизошла ошибка");
                }
    
                Console.WriteLine("\n\n");
    
                // Example 2
    
                // Порция текстовых блоков для чтения в одну итерацию
                int chunkSize = 5;
    
                filePath = "test/test_style.odt";
    
                // Сколько порций блоков нужно прочитать
                int chunkCount = 10;
                Console.WriteLine($"\n\nExample 2. Прочитать содержимое файла odt порциями. Всего {chunkCount} порций по {chunkSize} штук текстовых блоков в порции.");
    
                // Индекс стартовый
                int offset = 0;
                for (int m = 0; m < chunkCount; m++)
                {
                    Console.WriteLine($"\n Порция текстовых блоков #{m + 1}:  {chunkSize} штук стартовый индекс {offset}");
    
                    List<string> chunkBlocks = libreOffice.get_text_blocks_odt(filePath, offset, chunkSize);
                    if (chunkBlocks != null)
                    {
                        int blocksCount = chunkBlocks.Count;
                        Console.WriteLine("\n");
                        Console.WriteLine($"\n Получено штук: {blocksCount}");
                        Console.WriteLine("\n\n");
                        for (int k = 0; k < blocksCount; k++)
                        {
                            // Обрезать блок для вывода в консоль
                            string text = chunkBlocks[k];
                            Console.WriteLine($"\n{text}");
                        }
                    }
                    else
                    {
                        Console.WriteLine("\nБлоки кончились или произошла ошибка");
                        break;
                    }
                    offset += chunkSize;
                    Console.WriteLine("\n\n");
                }
    
                // Example 3: Read all text blocks in chunks of 50 until the end
                Console.WriteLine("\n\nExample 3: Read all text blocks in chunks of 50 until the end\n");
                filePath = "test/test_style.odt";
                chunkSize = 50;
                offset = 0;
                int totalBlocksRead = 0;
                int chunkNumber = 1;
    
                Console.WriteLine($"Reading all text blocks with chunk size: {chunkSize}\n");
    
                while (true)
                {
                    Console.WriteLine($"\nProcessing chunk #{chunkNumber} with offset: {offset}\n");
    
                    List<string> chunkBlocks = libreOffice.get_text_blocks_odt(filePath, offset, chunkSize);
    
                    if (chunkBlocks != null && chunkBlocks.Count > 0)
                    {
                        int blocksInChunk = chunkBlocks.Count;
                        totalBlocksRead += blocksInChunk;
    
                        Console.WriteLine($"Received {blocksInChunk} blocks in chunk #{chunkNumber}\n");
                        Console.WriteLine($"Total blocks read so far: {totalBlocksRead}\n");
    
                        // Display first and last block of the chunk
                        if (blocksInChunk > 0)
                        {
                            Console.WriteLine($"First block in chunk: {chunkBlocks[0]}\n");
                            if (blocksInChunk > 1)
                            {
                                Console.WriteLine($"Last block in chunk: {chunkBlocks[blocksInChunk - 1]}\n");
                            }
                        }
    
                        // If we received fewer blocks than the chunk size, we've reached the end
                        if (blocksInChunk < chunkSize)
                        {
                            Console.WriteLine($"\nReached the end of document. Last chunk had {blocksInChunk} blocks.\n");
                            break;
                        }
    
                        offset += chunkSize;
                        chunkNumber++;
                    }
                    else
                    {
                        Console.WriteLine("\nNo more blocks found or error occurred.\n");
                        break;
                    }
    
                    Console.WriteLine("\n");
                }
    
                Console.WriteLine($"\nFinished reading all text blocks. Total blocks read: {totalBlocksRead}\n");
    
                // Quit the application
                app.quit();
            }
        }
    }
    xhe_host = "127.0.0.1:7013";
    
    // подключим функциональные объекты, если еще не подключен
    require("../../../Templates JS/init.js");
    
    // начало
    echo("<hr><font color=blue>libreOffice.get_text_blocks_odt</font><hr>");
    
    const filePath = "test/test_style.odt";
    
    // Example 1: Get all text blocks from the ODT file
    echo("Example 1: Getting all text blocks\n");
    const blocks = libreOffice.get_text_blocks_odt(filePath);
    if (blocks) {
        const blocksCount = blocks.length;
        echo("\n Получено блоков штук: " + blocksCount);
        for (let k = 0; k < blocksCount; k++) {
            text = blocks[k];
            echo("\n" + text);
        }
    }
    else{
        echo("\nПроизошла ошибка");
    }
    
    echo("\n\n");
    
    // Example 2
    
    // Порция текстовых блоков для чтения в одну итерацию
    const chunkSize = 5;
    
    // Сколько порций блоков нужно прочитать
    const chunkCount = 10;
    echo("\nExample 2. Прочитать содержимое файла odt порциями. Всего chunkCount порций по chunkSize штук текстовых блоков в порции.");
    
    // Индекс стартовый
    let offset = 0;
    for (let m = 0; m < chunkCount; m++) {
        echo("\n Порция текстовых блоков #" + (m  + 1) + ":  chunkSize штук стартовый индекс " + offset);s
    
        const chunkBlocks = libreOffice.get_text_blocks_odt(filePath, offset, chunkSize);
        if (chunkBlocks) {
            const blocksCount = chunkBlocks.length;
            echo("\n");
    		echo("\n Получено штук: " + blocksCount);
    		echo("\n\n");
            for (let k = 0; k < blocksCount; k++) {
                // Обрезать блок для вывода в консоль
                text = chunkBlocks[k];
                echo("\n" + text);
            }
        }
        else{
    		echo("\nБлоки кончились или произошла ошибка");
    		break;
        }
        offset += chunkSize;
        echo("\n\n");
    }
    
    // Quit
    app.quit();

    =============================================
    libreoffice    Объекты    DOM  System  Vision  Web  Window        
    =============================================
    если что-то непонятно или необходимо узнать или считаете что надо добавить по работе этой функции, пишите в комментарии или на наш форум
    .