0

問題:テキストエリアから取得した base64 コードの PNG 画像を PHP で PNG 画像 (拡張子が .Png - image.png のバイナリ ファイル) に変換し、サーバーに保存する必要があります。次に、PHP と FPDF クラスを使用して PDF ファイル (example1.pdf) を生成し、以前に保存した PNG 画像を挿入します。結果の PDF ファイルもサーバーに保存されます。

以下は、私が作成した createPdfFromBase64.php ファイルです。

<?php
    #header('Content-Type: image/png');

    $base64 = $_POST['base64']; // Получаем base64 код PNG изображения из <textarea id="base64" name="base64"></textarea>

    #echo("$base64");

    $base64 = str_replace(' ','+',$base64); // If you want to save data that is derived from a Javascript canvas.toDataURL() function, you have to convert blanks into plusses. If you do not do that, the decoded data is corrupted.

    $data = base64_decode($base64); // Декодирует данные base64 и записывает их в переменную $data

    echo("$data");

    $filename = "image.png";

    // Пишем содержимое в файл image.png
    file_put_contents($filename, $data); // Сохраняем изображение image.png на сервере

    // Подключаем класс FPDF, для генерации PDF документа
    require('/home/u552896297/public_html/FPDF/fpdf.php');

    // Создаем FPDF объект
    $pdf= new FPDF();

    // Устанавливаем свойства документа
    $pdf->SetAuthor('Evgeniy Privalov'); // Устанавливаем автора PDF документа.
    $pdf->SetTitle('PDF generator'); // Устанавливаем title PDF документа.

    // Настройки страницы. Теперь когда главное сделано, приступим к созданию страницы.
    $pdf->AddPage('P'); // Книжная ориентация страницы
    $pdf->SetDisplayMode('real','default'); //Функция SetDisplayMode определяет как будет отображена страница. Вы можете определить параметры увеличения и разметки. В примере мы используем 100% увеличение и разметку по умолчанию, определенную в программе, используемой для просмотра.

    // Вставляем PNG картинку в верхний левый угол с разрешением в 300 точек на дюйм (300dpi)
    $pdf->Image('image.png', 10, 10, -300);

    // В конце мы выведем наш результат используя функцию Output
    $pdf->Output('example1.pdf', 'F'); // Здесь мы указали имя файла и параметр вывода, в данном случае "F". "F"-параметр сохранит результат в файл example1.pdf
?>

index.html ファイルはhttp://print-online.16mb.com/にあります。最初に「名刺を保存」(「Сохранить визитку」) を押してから、「PDF に変換」(「Конвертировать в PDF」) をクリックする必要があります。

しかし、PDFを生成するとき、エラー FPDF error: Not a PNG file: image.png

問題を解決するのを手伝ってください!

UPD: image.png ファイルはサーバー上に作成されますが、ブラウザには表示されません! http://print-online.16mb.com/image.png

4

1 に答える 1

1

明らかに、その後のアップロードまたは編集で何か問題が発生します。http://www.php.net/manual/en/ref.fileinfo.phpを使用して、アップロードされた画像をテストし、返された情報が期待どおりかどうかを確認します。

于 2012-07-19T11:57:53.373 に答える