создал PDF, который выводит странные символы - PullRequest
3 голосов
/ 18 августа 2010

Это мой код, который будет получать данные из базы данных, а затем сохранять их в таблице для файла .pdf:

<?php

// test the table functions
error_reporting(E_ALL);
include('includes/pdf/class.ezpdf.php');
  //echo 'AAA-1-';
  $pdf = new Cezpdf();
  //$pdf->selectFont('./fonts/Helvetica');

  //connect to db
  session_start();
  require_once('connect/ticketivity_connect.php');
  //echo 'AAA-2-';


  //get customer details
  $sql_cust = "SELECT * FROM customers where customer_id = '".$_GET['customerid']."'";
  $res_cust = mysql_query($sql_cust);
  $num_cust = mysql_num_rows($res_cust);
  $row_cust = mysql_fetch_assoc($res_cust);

  //display customer details
  $db_data[] = array('first' => 'Customer Name:', 'second' => $row_cust['cust_name']);
  $db_data[] = array('first' => 'Phone Number:', 'second' => $row_cust['cust_phone']);
  $db_data[] = array('first' => 'Address:', 'second' => $row_cust['cust_address']);
  $db_data[] = array('first' => '>Customer Ref/ Room Number:', 'second' => $row_cust['cust_ref']);
  //echo 'AAA-3-';
  //get order
  $sql_orderinfo= "SELECT * FROM orders where customer_id = '".$_GET['customerid']."'";
  $res_orderinfo = mysql_query($sql_orderinfo);
  $num_orderid = mysql_num_rows($res_orderinfo);
  $row_orderid = mysql_fetch_assoc($res_orderinfo); 
  //echo 'AAA-4-';
  //display order id
  $orderid_len = strlen($row_orderid['order_id']);
  if($orderid_len == 1) { 
   //echo 'AAA1--';
   $db_data[] = array('first' => 'Order ID:', 'second' => '00000'.$row_orderid['order_id']);
  } else if ($orderid_len == 2){ 
   //echo 'AAA2--';
   $db_data[] = array('first' => 'Order ID:', 'second' => '0000'.$row_orderid['order_id']);
  } else if ($orderid_len == 3){ 
   //echo 'AAA3--';
   $db_data[] = array('first' => 'Order ID:', 'second' => '000'.$row_orderid['order_id']);
  } else if ($orderid_len == 4){
   //echo 'AAA4--';
   $db_data[] = array('first' => 'Order ID:', 'second' => '00'.$row_orderid['order_id']);
  } else if ($orderid_len == 5){ 
   //echo 'AAA5--';
   $db_data[] = array('first' => 'Order ID:', 'second' => '0'.$row_orderid['order_id']);
  } else if ($orderid_len == 6){
   //echo 'AAA6--';
   $db_data[] = array('first' => 'Order ID:', 'second' => $row_orderid['order_id']);
  } 

  //table columns
  $col_names = array(
   'first' => 'first',
   'second' => 'second',
  );
  //echo 'AAA-5-';
  $table_title = 'Customer Details';
  //echo 'AAA-6-';
  $pdf->ezTable($db_data, $col_names, $table_title, array('width'=>550));
  if (isset($d) && $d){
   //echo 'AAA-if';
   $pdfcode = $pdf->output(1);
   $pdfcode = str_replace("\n","\n<br>", $pdfcode);
   echo '<html><body>';
   echo trim($pdfcode);
   echo '</body></html>';
  } else {
   //echo 'AAA-else';
   $pdf->ezStream();
  }

?>

Вывод:

%PDF-1.3 %���� 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Creator (R and OS php pdf writer, http://www.ros.co.nz) /CreationDate (D:20100817) >> endobj 6 0 obj << /Type /Page /Parent 3 0 R /Contents [ 7 0 R 8 0 R ] >> endobj 7 0 obj << /Filter /FlateDecode /Length 120 >> stream x��2�300P@&�ҹ�,�\����`di�gfb�`ah�gai�����`h�d�)(h8����)���$f�k*�d)��pb1h����8sK�qF�@����F@��m\����-� endstream endobj 8 0 obj << /Filter /FlateDecode /Length 94 >> stream x��2�300P@&�ܹʹ�,���L,��,, r`"�@$��Qi����Jct�03�|C4��(" �7����2D�a����T4z endstream endobj xref 0 9 0000000000 65535 f 0000000015 00000 n 0000000080 00000 n 0000000126 00000 n 0000000257 00000 n 0000000286 00000 n 0000000391 00000 n 0000000464 00000 n 0000000657 00000 n trailer << /Size 9 /Root 1 0 R /Info 5 0 R >> startxref 823 %%EOF 

Что мне нужно длясделать / добавить?

1 Ответ

1 голос
/ 18 августа 2010

Вопрос не очень понятен, но я предполагаю, что вы пишете веб-приложение и пытаетесь передать документ PDF клиенту.

Во-первых, вам нужно установить заголовок, чтобы клиент знал, что он должен ожидать данные PDF:

header('Content-type: application/pdf');

Это заставит большинство браузеров отображать PDF в окне браузера. Если вы предпочитаете, чтобы браузер предлагал PDF-файл для загрузки, сделайте это в дополнение к вышеуказанному:

header('Content-Disposition: attachment; filename="filename.pdf"');

Вы можете установить любое имя файла вместо filename.pdf.

Важно сделать эти вызовы на header() до того, как будет записан любой вывод .

Кроме того, я думаю, что $d - флаг отладки, но я не думаю, что было бы очень хорошей идеей выполнять те строковые операции, которые вы выполняете, когда он установлен. Вы можете повредить данные PDF.

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