1

上記のテクノロジーを使用して、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; 
?>

私が言ったように、私は上記の他の質問リンクで他のアイデアを試しました. 今のところ、addslashes があるバージョンに座っているだけです。

助けてくれてありがとう。

4

1 に答える 1

1

これを試してみてください。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'";

データを取得するには、すでに行っているのと同じように、選択してコンテンツを出力するだけでよいはずです。

于 2010-03-09T18:05:29.523 に答える