Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не генерит pdf с картинками, использование html2pdf 
:(
    Опции темы
СЭНСЭЙ
Дата 16.12.2011, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



Добрый день.
Скачал либу
html2pdf
написал к ней функцию:
Код

function fn_html_to_pdf_for_email_attachments($name,$html)
{

require_once(DIR_LIB . 'html2pdf_saver/public_html/config.inc.php');
require_once(DIR_LIB . 'html2pdf_saver/public_html/pipeline.factory.class.php');
parse_config_file(DIR_LIB . 'html2pdf_saver/public_html/html2ps.config');

function convert_to_pdf($pdf,$cnt) {

        class MyDestinationFile extends Destination {
                var $_dest_filename;

                function MyDestinationFile($dest_filename) {
                        $this->_dest_filename = $dest_filename;
                }

                function process($tmp_filename, $content_type) {
                        copy($tmp_filename, $this->_dest_filename);
                }
        }


        class MyDestinationDownload extends DestinationHTTP {
                function MyDestinationDownload($filename) {
                        $this->DestinationHTTP($filename);
                        $GLOBALS['PDFOutFileName'] = $filename;
                }

                function headers($content_type) {
                        return array(
                                "Content-Disposition: attachment; filename=".$GLOBALS['PDFOutFileName'].".".$content_type->default_extension,
                                "Content-Transfer-Encoding: binary",
                                "Cache-Control: must-revalidate, post-check=0, pre-check=0",
                                "Pragma: public"
                        );
                }
        }

        class MyFetcherLocalFile extends Fetcher {
        var $_content;

                function MyFetcherLocalFile($_content) {
                        $this->_content = $_content;
                }

                function get_data($dummy1) {
                        return new FetchedDataURL($this->_content, array(), "");
                }

                function get_base_url() {
                        return "";
                }
        }
    
    $media = Media::predefined("A4");
        $media->set_landscape(false);
        $media->set_margins(array('left' => 20, 'right' => 20, 'top' => 20, 'bottom' => 0));
        $media->set_pixels(600); 

        $GLOBALS['g_config'] = array (
                'cssmedia' => 'print',
                'scalepoints' => '1',
                'renderimages' => true,
                'renderlinks' => true,
                'renderfields' => true,
                'renderforms' => false,
                'mode' => 'html',
                'encoding' => 'utf8',
                'debugbox' => false,
                'pdfversion' => '1.4',
                'draw_page_border' => false,
                'smartpagebreak' => true,
        );

        $g_px_scale = mm2pt($media->width() - $media->margins['left'] - $media->margins['right']) / $media->pixels;
        $g_pt_scale = $g_px_scale * 1.43; 

        $pipeline = new Pipeline;
        $pipeline->configure($GLOBALS['g_config']);
        $pipeline->fetchers[] = new MyFetcherLocalFile($cnt);
        $pipeline->destination = new MyDestinationFile($pdf);
        //$pipeline->destination = new MyDestinationDownload($pdf);
        $pipeline->data_filters[] = new DataFilterHTML2XHTML;
        $pipeline->pre_tree_filters = array();
        //$header_html    = "test";
        //$footer_html    = "test";
        $filter = new PreTreeFilterHeaderFooter($header_html, $footer_html);
        $pipeline->pre_tree_filters[] = $filter;
        $pipeline->pre_tree_filters[] = new PreTreeFilterHTML2PSFields();
        $pipeline->parser = new ParserXHTML();
        $pipeline->layout_engine = new LayoutEngineDefault;
        $pipeline->output_driver = new OutputDriverFPDF($media);

        $pipeline->process('', $media);
}
$res = db_query("replace into ?:temp_data (d_name,d_value) VALUES ('file',?s)",$name);
convert_to_pdf($name,$html);

}


Файл создает - все хорошо, только если в коде html, который передается в функцию нет тега img
иначе ошибка и не говорит, сабака. где именно.
Помогите разобраться пожалуйста.
PM MAIL   Вверх
СЭНСЭЙ
Дата 21.12.2011, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



В одном из браузеров сказало:
Fatal error: Class 'FetcherUrl' not found in E:\www\inetpub\localhost\www\html2pdf\image.class. php on line 88

добавил в код строку
require_once('../fetcher.url.class.php');
теперь генерит пдф, но вместо картинок квадраты.
Помогите пожалуйста кто нибудь!
PM MAIL   Вверх
СЭНСЭЙ
Дата 7.1.2012, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



Нашел решение проблемы

в файле
image.class.php
есть строка (№106 или около того)
$handle = do_image_open($filename,$type);
заменил ее на
$handle = do_image_open($url,$type);

и все заработало

конечно это не методом тыка.
Плоследовательно дампил данные.
Но почему в коде изначально было так - не знаю.
Ошибка , умышленно или каламбур - хз.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Libraries | Следующая тема »


 




[ Время генерации скрипта: 0.0605 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.