PHP MYSQL FPDF извлекает строку PDF, сохраненную в виде BLOB-объекта - PullRequest
1 голос
/ 08 марта 2010

Используя вышеупомянутые технологии, я хочу создать PDF, сохранить его в моей базе данных и отправить по электронной почте. Все одним нажатием кнопки.

Я также хочу вызвать его, чтобы он мог отображаться с гиперссылкой.

Я очень новичок в FPDF. Поэтому я пытаюсь начать очень медленно.

Я начал с этой ссылки stackoverflow Q

Я поместил обе части его кода на одну и ту же страницу и попробовал с отдельными страницами. Я сделал предложенные изменения / дополнения и даже сделал построчное сравнение.

Я все еще получаю сообщение "ошибка формата: не PDF или поврежден"

Если я просто $ pdf-> Output (); Я получаю PDF для отображения. Это либо способ вывода строки, либо функция header (). Это не метод хранения, если моя настройка столбца неверна. Но капля - это капля, верно?

Если хотите, я могу загрузить очищенный код. Просто дайте мне знать, что поможет ответить на этот вопрос.

Спасибо

JJ

вот код по запросу вот где я ввожу это:

<?php
session_start();
include "server.php";//my file to connect to db
require('fpdf.php');

$pdf=new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');

$content = $pdf->Output("", "S"); //return the pdf file content as string

$sql = "update table set table_pdf= '".addslashes($content)."' " . 
    "where table_id = '188'";

mysql_query($sql);

//here's where I retrieve it

$sql2 = "select table_pdf from table where table_id = '188'"; 
$result2 = mysql_query($sql2); 
$rs = mysql_fetch_assoc($result2); 

$content2 = $rs['rdngs_hdr_pdf']; 
header('Content-Type: application/pdf'); 
header("Content-Length: ".strlen(content2)); 
header('Content-Disposition: attachment; filename=myfile.pdf'); 
print $content2; 
?>

Как я уже сказал, я попробовал другие идеи по другой ссылке вопроса выше. сейчас он просто сидит на версии, где есть аддлэш.

Спасибо за любую помощь.

1 Ответ

1 голос
/ 09 марта 2010

Дайте это попробовать. Вместо использования addslashes для экранирования содержимого, попробуйте использовать unpack, чтобы получить его в двоичном представлении:

$content = $pdf->Output("", "S"); //return the pdf file content as string
$data = unpack("H*hex", $content);

$sql = "update table set table_pdf= " . 0x".$data['hex']." . " " . 
    "where table_id = '188'";

Для извлечения данных вы должны иметь возможность просто сделать выбор, а затем вывести содержимое, как вы уже делаете.

...