Raghukds Ответов: 1

Плода ошибки при прохождении переменной PHP с Георгиев в PHP


здесь я передаю переменную php вместо пути к pdf файлу как сказано в URL Использование pdf-файла из переменной php вместо файла / FAQ: Miscellaneous | Setasign[^] но это показывает некоторую ошибку плода, описанную ниже


ошибка плода: неперехваченное исключение «InvalidArgumentException» с сообщением «Невозможно открыть VarStream: // 0!» в C: \ xampp \ htdocs \ VB \ FPDI \ pdf_parser.php: 183 Трассировка стека: # 0 C: \ xampp \ htdocs \ VB \ FPDI \ fpdi_pdf_parser.php (64): pdf_parser-> __construct ('VarStream: // 0 ') # 1 C: \ xampp \ htdocs \ VB \ FPDI \ fpdi.php (135): fpdi_pdf_parser-> __construct (' VarStream: // 0 ') # 2 C: \ xampp \ htdocs \ VB \ FPDI \ fpdi .php (106): FPDI-> _getPdfParser ('VarStream: // 0') # 3 C: \ xampp \ htdocs \ VB \ mlpdf.php (133): FPDI-> setSourceFile ('VarStream: // 0') # 4 C: \ xampp \ htdocs \ VB \ TCPDF \ tcpdf.php (3537): PDF-> Header () # 5 C: \ xampp \ htdocs \ VB \ TCPDF \ tcpdf.php (3204): TCPDF-> setHeader () # 6 C: \ xampp \ htdocs \ VB \ TCPDF \ tcpdf.php (3116): TCPDF-> startPage ('', '', false) # 7 [внутренняя функция]: TCPDF-> AddPage () # 8 C: \ xampp \ htdocs \ VB \ FPDI \ fpdf_tpl.php (360): call_user_func_array (массив, массив) # 9 C: \ xampp \ htdocs \ VB \ mlpdf.php (167): FPDF_TPL-> AddPage () # 10 {main} добавлен в C: \ xampp \ htdocs \ VB \ FPDI \ pdf_parser.php в строке 183



где mlpdf.php это название файла

Что я уже пробовал:

<?php
// just require TCPDF instead of FPDF
require_once('tcpdf/tcpdf.php');
require_once('fpdi/fpdi.php');

$collcode=15485;


	$serverName = "KUDK126";

		
	$connectionInfo = array( "Database"=>"qp");
	$objConnect = sqlsrv_connect( $serverName, $connectionInfo);
 
$id=10;
	$strSQL = "SELECT * FROM files WHERE FilesID = $id ";
	$objQuery = sqlsrv_query($objConnect,$strSQL) or die ("Error Query [".$strSQL."]");

$objResult = sqlsrv_fetch_array($objQuery);
class VarStream extends FPDI{
	
	 private $_pos;
    private $_stream;
    private $_cDataIdx;

    static protected $_data = array();
    static protected $_dataIdx = 0;
    
    static function createReference(&$var) {
        $idx = self::$_dataIdx++;
        self::$_data[$idx] =& $var;
        return __CLASS__.'://'.$idx;
    }
    
    static function unsetReference($path) {
        $url = parse_url($path);
        $cDataIdx = $url["host"];
        if (!isset(self::$_data[$cDataIdx]))
            return false;
            
        unset(self::$_data[$cDataIdx]);
        
        return true;
    }

    public function stream_open($path, $mode, $options, &$opened_path) {
        $url = parse_url($path);
        $cDataIdx = $url["host"];
        if (!isset(self::$_data[$cDataIdx]))
            return false;
        $this->_stream = &self::$_data[$cDataIdx];
        $this->_pos = 0;
        if (!is_string($this->_stream)) return false;
        $this->_cDataIdx = $cDataIdx;
        return true;
    }

    public function stream_read($count) {
        $ret = substr($this->_stream, $this->_pos, $count);
        $this->_pos += strlen($ret);
        return $ret;
    }

    public function stream_write($data) {
        $l=strlen($data);
        $this->_stream =
            substr($this->_stream, 0, $this->_pos) .
            $data .
            substr($this->_stream, $this->_pos += $l);
        return $l;
    }

    public function stream_tell() {
        return $this->_pos;
    }

    public function stream_eof() {
        return $this->_pos >= strlen($this->_stream);
    }

    public function stream_seek($offset, $whence) {
        $l=strlen($this->_stream);
        switch ($whence) {
            case SEEK_SET: $newPos = $offset; break;
            case SEEK_CUR: $newPos = $this->_pos + $offset; break;
            case SEEK_END: $newPos = $l + $offset; break;
            default: return false;
        }
        $ret = ($newPos >= 0 && $newPos <= $l);
        if ($ret) $this->_pos=$newPos;
        return $ret;
    }
    
    public function url_stat($path, $flags) {
        $url = parse_url($path);
        $dataIdx = $url["host"];
        if (!isset(self::$_data[$dataIdx]))
            return false;

        $size = strlen(self::$_data[$dataIdx]);
        return array(
            7 => $size,
            'size' => $size
        );
    }
    
    public function stream_stat() {
        $size = strlen($this->_stream);
        
        return array(
            'size' => $size,
            7 => $size,
        );
    }
	
	
}

class PDF extends VarStream {

    var $_tplIdx;

    function Header() {

       // global $fullPathToFile;
stream_wrapper_register('VarStream', 'VarStream') or die('Failed to register protocol VarStream://');
        if (is_null($this->_tplIdx)) {

            // THIS IS WHERE YOU GET THE NUMBER OF PAGES
			
            $this->numPages = $this->setSourceFile(VarStream::createReference($objResult["FilesName"]));
            $this->_tplIdx = $this->importPage(1);

        }
        $this->useTemplate($this->_tplIdx);

    }

    function Footer() {}

}

// initiate PDF
//stream_wrapper_register('VarStream', 'VarStream') or die('Failed to register protocol VarStream://');
$pdf = new PDF();
$pdf->setFontSubsetting(true);

$style = array(
    'position' => '',
    'align' => 'C',
    'stretch' => false,
    'fitwidth' => true,
    'cellfitalign' => '',
    'border' => false,
    'hpadding' => 'auto',
    'vpadding' => 'auto',
    'fgcolor' => array(0,0,0),
    'bgcolor' => false, //array(255,255,255),
    'text' => true,
    'font' => 'helvetica',
    'fontsize' => 8,
    'stretchtext' => 4
);

// add a page
$pdf->AddPage();
//$pdf->Cell(0, 0, 'CODE 128 AUTO', 0, 1);
$pdf->write1DBarcode('15748', 'C128', '', '', '', 15, 0.4, $style, 'N');

$pdf->Ln();

// The new content
$pdf->StartTransform();


		
		$pdf->Rotate(40, 50, 110);



		$pdf->SetFont("times", "B", 70);
		$pdf->SetAlpha(0.3);
		$pdf->Text(20,150,'Raghu');
		$pdf->StopTransform();
//$pdf->SetAlpha(2);

// THIS PUTS THE REMAINDER OF THE PAGES IN
if($pdf->numPages>1) {
    for($i=2;$i<=$pdf->numPages;$i++) {
        $pdf->endPage();
        $pdf->_tplIdx = $pdf->importPage($i);
        $pdf->AddPage();
		//$pdf->Cell(0, 0, 'CODE 128 AUTO', 0, 1);
$pdf->write1DBarcode('15748', 'C128', '', '', '', 15, 0.4, $style, 'N');

$pdf->Ln();
		$pdf->StartTransform();


		
		$pdf->Rotate(40, 50, 110);



		$pdf->SetFont("times", "B", 70);
		$pdf->SetAlpha(0.3);
		$pdf->Text(20,150,'Raghu');
		$pdf->StopTransform();
		//$pdf->Image('1.jpg', 90, 100, 60, 60, '', 'http://www.tcpdf.org', '', true, 72);
		//$pdf->SetAlpha(0.5);
    }
}

// Output the file as forced download
$pdf->Output();
?>

1 Ответов

Рейтинг:
8

Raghu112

stream_wrapper_register('VarStream', 'VarStream') или умереть('не удалось зарегистрировать протокол VarStream://'); это должно быть помещено перед классом в формате PDF распространяется и начинается