Warning: fseek(): stream does not support seeking with FPDI

核能气质少年 提交于 2019-12-24 18:45:00

问题


I tried to look at similar posts but nothing seems to work. This is my code:

<?php
setlocale(LC_ALL, 'it_IT');
require_once('lib/fpdf/fpdf.php');
require_once('lib/fpdi/fpdi.php');
require_once('lib/phpmailer/class.phpmailer.php');

$mysqli = new mysqli("localhost", "user", "psw", "db");

if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}

$nome = $_POST[nome];
$email = $_POST[email];
$importo = intval($_POST[importo]);
$telefono = intval($_POST[telefono]);
$pagamento = $_POST[pagamento];
$agenzia = $_POST[agenzia];
$idp = intval($_POST[id]);
$ip = getRealIpAddr();
$pagina = urldecode($_SERVER['HTTP_REFERER']);
$device = $_SERVER['HTTP_USER_AGENT'];     

$querylista = "SELECT * FROM ListeSposi WHERE id =".$idp;

$datilista = $mysqli->query($querylista);

$row = $datilista->fetch_array(MYSQLI_ASSOC);

$NomeSposo = $row['NomeSposo'];
$CognomeSposo = $row['CognomeSposo'];
$NomeSposa = $row['NomeSposa'];
$CognomeSposa = $row['CognomeSposa'];

// initiate FPDI
$pdf = new FPDI();
// add a page
$pdf->AddPage();
// set the source file
$pdf->setSourceFile("http://www.vantravelgroup.com/sposi/buonoricevuta.pdf");
// import page 1
$tplIdx = $pdf->importPage(1);
// use the imported page and place it at point 10,10 with a width of 100 mm
$pdf->useTemplate($tplIdx, 10, 10, 100);

// now write some text above the imported page
$pdf->SetFont('Arial');
$pdf->SetTextColor(255, 0, 0);
$pdf->SetXY(30, 30);
$pdf->Write(0, 'PROVAAAAAAAAAAAAAAAAAAAA');

$buonoricevuta="../ricevute/RicevutaBuono".$nome.".pdf";
$pdf->Output($buonoricevuta,'F');


$insert = "INSERT INTO Donazioni (id_lista, nome, email, importo, telefono, agenzia, indirizzo_ip, pagina, dispositivo, buonoricevuta) 
VALUES ('".$idp."', '".$nome."', '".$email."', '".$importo."', ".$telefono.", '".$agenzia."', '".$ip."', '".$pagina."', '".$device."', '".$buonoricevuta."')";

// Eseguo la query per inserire una nuova riga e chiudo la connessione

if ($mysqli->query($insert) === TRUE) {
    $status = "Abbiamo registrato correttamente la transazione, ecco un riepilogo:";
} else {
    $status = "Lo scambio di dati non è andato a buon fine, questo è un messaggio diagnostico. </br>" . $newRow . "<br>" . $conn->error;
}

$mysqli->close();

$error = array();

// Mando le email

if(empty($error))
{ 

$emailUser = new PHPMailer();
$emailUser->From      = 'liste@vantravelgroup.com';
$emailUser->FromName  = 'Vantravel Group - Il Gabbiano - Istantravel - Globmaster';
$emailUser->Subject   = 'Qualcuno ha partecipato alla tua lista!';
$emailUser->MsgHTML('<img src="'.$logo.'" alt="Logo agenzia"><br>'.$status.'<br>Nome: '.$nome.'<br>Email: '.$email.'<br>Importo: '.$importo.'<br>Telefono: '.$telefono.'<br>Tipo di pagamento: '.$pagamento.'<br>Agenzia di Riferimento: '.$agenzia.'<br>In allegato può trovare in buono/ricevuta che le da diritto a uno sconto, una volta completato il pagamento, sul suo prossimo viaggio prenotato in una delle nostre agenzie.');
$emailUser->AddAddress( $email );
$emailUser->AddAttachment( $buonoricevuta , 'Buono_Ricevuta.pdf' );
return $emailUser->Send();

$emailAdmin = new PHPMailer();
$emailAdmin->From      = 'liste@vantravelgroup.com';
$emailAdmin->FromName  = 'Vantravel Group - Il Gabbiano - Istantravel - Globmaster';
$emailAdmin->Subject   = 'Qualcuno ha partecipato a una lista!';
$emailAdmin->MsgHTML('<img src="'.$logo.'" alt="Logo agenzia"><br>'.$status.'<br>Nome: '.$nome.'<br>Email: '.$email.'<br>Importo: '.$importo.'<br>Telefono: '.$telefono.'<br>Tipo di pagamento: '.$pagamento.'<br>Agenzia di Riferimento: '.$agenzia.'<br>In allegato può trovare in buono/ricevuta che le da diritto a uno sconto, una volta completato il pagamento, sul suo prossimo viaggio prenotato in una delle nostre agenzie.' );
return $emailAdmin->Send();
}

function getRealIpAddr() {
        if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
                $ip=$_SERVER['HTTP_CLIENT_IP'];
        } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
                $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
        } else {
                $ip=$_SERVER['REMOTE_ADDR'];
        }
        return $ip;
}

?>

The error that comes out is:

Warning: fseek(): stream does not support seeking in /home/vantra5/public_html/sposi/default/lib/fpdi/pdf_parser.php on line 243

Warning: fseek(): stream does not support seeking in /home/vantra5/public_html/sposi/default/lib/fpdi/pdf_parser.php on line 274

Warning: fseek(): stream does not support seeking in /home/vantra5/public_html/sposi/default/lib/fpdi/pdf_parser.php on line 276

Fatal error: Uncaught exception 'Exception' with message 'Unable to find "startxref" keyword.' in /home/vantra5/public_html/sposi/default/lib/fpdi/pdf_parser.php:287 Stack trace: #0 /home/vantra5/public_html/sposi/default/lib/fpdi/pdf_parser.php(195): pdf_parser->_findXref() #1 /home/vantra5/public_html/sposi/default/lib/fpdi/fpdi_pdf_parser.php(64): pdf_parser->__construct('http://www.vant...') #2 /home/vantra5/public_html/sposi/default/lib/fpdi/fpdi.php(123): fpdi_pdf_parser->__construct('http://www.vant...') #3 /home/vantra5/public_html/sposi/default/lib/fpdi/fpdi.php(101): FPDI->_getPdfParser('http://www.vant...') #4 /home/vantra5/public_html/sposi/default/mail.php(45): FPDI->setSourceFile('http://www.vant...') #5 {main} thrown in /home/vantra5/public_html/sposi/default/lib/fpdi/pdf_parser.php on line 287

I even made sure that the pdf template is < version 1.5!

Any idea about the source of the problem?


回答1:


Use a local path instead of an URL:

$pdf->setSourceFile("/local/path/to/sposi/buonoricevuta.pdf");


来源:https://stackoverflow.com/questions/35041875/warning-fseek-stream-does-not-support-seeking-with-fpdi

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!