Server : LiteSpeed
System : Linux terra.hostitbro.com 5.14.0-611.54.3.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 7 16:31:24 EDT 2026 x86_64
User : outerorb ( 1091)
PHP Version : 8.1.34
Disable Function : mail
Directory :  /home2/outerorb/emp.outerorbittech.in/scripts/

📁 Create New:
⬆️ Upload File:
Current Dir [ Writable ] Root [ Writable ]


OR Upload from URL:
URL: Save as:

📄 File: extract_pdf3.php

Path: /home2/outerorb/emp.outerorbittech.in/scripts/extract_pdf3.php

Size: 2.98 KB

Permissions: 0666

<?php
// Try to extract ToUnicode mapping and decode text
$content = file_get_contents('C:/Users/hp/Downloads/amit kumar verma.pdf');

// Find ToUnicode streams
preg_match_all('/stream\r?\n(.*?)\r?\nendstream/s', $content, $matches);

// Build char map from ToUnicode
$charMap = [];
foreach ($matches[1] as $i => $stream) {
    $decoded = @gzinflate(substr($stream, 2));
    if ($decoded === false) $decoded = @gzinflate($stream);
    if ($decoded === false) $decoded = @gzuncompress($stream);
    if ($decoded && strpos($decoded, 'beginbfchar') !== false) {
        // This is a ToUnicode stream
        preg_match_all('/<([0-9A-Fa-f]+)>\s*<([0-9A-Fa-f]+)>/', $decoded, $bfchar);
        for ($j = 0; $j < count($bfchar[1]); $j++) {
            $glyphCode = hexdec($bfchar[1][$j]);
            $unicodeHex = $bfchar[2][$j];
            // Convert unicode hex to character
            $unicode = '';
            for ($k = 0; $k < strlen($unicodeHex); $k += 4) {
                $cp = hexdec(substr($unicodeHex, $k, 4));
                if ($cp >= 0xD800 && $cp <= 0xDBFF && $k + 4 < strlen($unicodeHex)) {
                    $high = $cp;
                    $low = hexdec(substr($unicodeHex, $k + 4, 4));
                    $cp = 0x10000 + (($high - 0xD800) << 10) + ($low - 0xDC00);
                    $k += 4;
                }
                $unicode .= mb_chr($cp, 'UTF-8');
            }
            $charMap[$glyphCode] = $unicode;
        }
    }
}

echo "CharMap entries: " . count($charMap) . "\n";

// Now decode the text streams
foreach ($matches[1] as $i => $stream) {
    $decoded = @gzinflate(substr($stream, 2));
    if ($decoded === false) $decoded = @gzinflate($stream);
    if ($decoded === false) $decoded = @gzuncompress($stream);
    if ($decoded && strpos($decoded, 'BT') !== false && strpos($decoded, 'Tj') !== false) {
        // Text stream - decode using charMap
        $result = '';
        preg_match_all('/BT(.*?)ET/s', $decoded, $blocks);
        foreach ($blocks[1] as $block) {
            preg_match_all('/<([0-9A-Fa-f]+)>\s*Tj/', $block, $tjs);
            foreach ($tjs[1] as $hex) {
                $code = hexdec($hex);
                if (isset($charMap[$code])) {
                    $result .= $charMap[$code];
                } else {
                    $result .= '?';
                }
            }
            // Also handle TJ arrays
            preg_match_all('/\[([^\]]*)\]\s*TJ/', $block, $tjArrays);
            foreach ($tjArrays[1] as $arr) {
                preg_match_all('/<([0-9A-Fa-f]+)>/', $arr, $hexes);
                foreach ($hexes[1] as $hex) {
                    $code = hexdec($hex);
                    if (isset($charMap[$code])) {
                        $result .= $charMap[$code];
                    }
                }
            }
            $result .= "\n";
        }
        if (trim($result)) {
            echo "=== Text Stream $i ===\n";
            echo $result . "\n";
        }
    }
}

← Back to Directory Edit File 🔒 Chmod

WP File Manager