2016-06-30 6 views
0

Мое дело немного сложнее, чем другие, о которых говорилось ранее. с тем же кодом результаты разные.Ошибка dompdf Невозможно передать pdf: заголовки уже отправлены

РАБОЧАЯ CENARIO - первый шаг

Перейти к http://renamchristofoletti.com/en/works/covers/

Нажмите на картинки, и СДВ до 4 изображений.

Нажмите, чтобы загрузить, а затем, Загрузить портфолио.

PDF был сгенерирован как ожидалось. =)

ОШИБКА CENARIO - второй этап

Сделайте то же самое, что и выше, но теперь, добавить более чем 6 изображений в эскизах.

PDF получить «Невозможно потоковую PDF: заголовки уже отправленное сообщение об ошибке»

Не имеет значения с изображением вы выбор, то же самое происходит.

DOMPDF КОД

ob_clean(); 
echo '<html><body>...'; // above html and css goes here 

$images2 = str_replace(' ', "", $_COOKIE['rc_folio']); 
$images = explode(',', $images2); 
$images = array_filter($images); 

foreach ($images as $image) { 
    $img_id = get_image_id($image); 

    $imglocal = wp_get_attachment_metadata($img_id); 

     $img_abs_path = ABSPATH . 'wp-content/uploads/' . $imglocal['file']; 
     list($width, $height) = getimagesize($img_abs_path); 
     if ($width > $height) { 
      // Landscape 
      echo '<div style="page-break-after: always; text-align: center;"><div class="content-line"></div><div class="content-line-2"></div><img src="' . $img_abs_path . '" style="width: 80%; max-width: 80%; height: auto; margin-top: 250px;" /></div>'; 
     } else { 
      // Portrait or Square 
      echo '<div style="page-break-after: always; text-align: center;"><div class="content-line"></div><div class="content-line-2"></div><img src="' . $img_abs_path . '" style="width: auto; height: 60%; max-height: 60%; margin-top: 180px;" /></div>'; 
     } 
} 
echo '</body></html>'; 

$html = ob_get_contents(); 
ob_get_clean(); 

$pdf_path = ABSPATH . 'wp-content/themes/moqueca/dompdf-master/dompdf_config.inc.php'; 
require_once($pdf_path); 

$dompdf = new DOMPDF(); 
$dompdf->load_html($html); 
$dompdf->set_paper('letter', 'portrait'); 
$dompdf->render(); 
$dompdf->stream("renam_christofoletti_customfolio.pdf"); 
exit(); 

Пожалуйста, кто может прояснить свое мнение по этому поводу? Я пробовал много других решений, но ничего не работает.

Заранее благодарен!

+0

Зачем использовать 'ob_clean' и т. Д. Я не думаю, что это рекомендуемый способ. Можете ли вы преобразовать все ваши 'echo' в' $ html. = ''И, наконец, использовать это? Дайте мне знать, если вы все еще получите ошибку – Dharam

ответ

1

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

echo ini_get('output_buffering'); 

Если это так, вы можете изменить размер буфера:

ini_set('output_buffering', true); // no limit 
ini_set('output_buffering', 12288); // 12KB limit 

или следовать инструкции в комментариях дхаров к вашему вопросу и нажимное содержимое в переменную непосредственно, а не полагаться на буферизации вывода:

$html = '<html><body>...'; // above html and css goes here 

$images2 = str_replace(' ', "", $_COOKIE['rc_folio']); 
$images = explode(',', $images2); 
$images = array_filter($images); 

foreach ($images as $image) { 
    $img_id = get_image_id($image); 

    $imglocal = wp_get_attachment_metadata($img_id); 

     $img_abs_path = ABSPATH . 'wp-content/uploads/' . $imglocal['file']; 
     list($width, $height) = getimagesize($img_abs_path); 
     if ($width > $height) { 
      // Landscape 
      $html .= '<div style="page-break-after: always; text-align: center;"><div class="content-line"></div><div class="content-line-2"></div><img src="' . $img_abs_path . '" style="width: 80%; max-width: 80%; height: auto; margin-top: 250px;" /></div>'; 
     } else { 
      // Portrait or Square 
      $html .= '<div style="page-break-after: always; text-align: center;"><div class="content-line"></div><div class="content-line-2"></div><img src="' . $img_abs_path . '" style="width: auto; height: 60%; max-height: 60%; margin-top: 180px;" /></div>'; 
     } 
} 
$html .= '</body></html>'; 
0

Дела решено. Я просто изменил эхо для html. = И все работает отлично.

Спасибо.

 Смежные вопросы

  • Нет связанных вопросов^_^