Изображения отображаются пустыми при отображении PDF с использованием html2ps API - PullRequest
2 голосов
/ 07 июня 2011

Я работаю над сценарием создания PDF, я пытаюсь создать свой PDF, используя html2ps API.Мой код отлично работает на моей машине с Windows 7 Professional Edition и PHP версии 5.3.5.Теперь я загрузил свои файлы на сервер (с Linux и php версии 5.2.15), возникла проблема при отображении моих изображений.В моем файле PDF нет изображения, но есть пустое место для изображения.другой макет моей страницы работает нормально.Если кто-нибудь может помочь мне, как я могу решить эту проблему.Вот мой код для скрипта html2pdf ...

_dest_filename = $dest_filename;
      }

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

    class MyFetcherMemory extends Fetcher {
      var $base_path;
      var $content;

      function MyFetcherMemory($content, $base_path) {
        $this->content   = $content;
        $this->base_path = $base_path;
      }

      function get_data($url) {
        if (!$url) {
          return new FetchedDataURL($this->content, array(), "");
        } else {
          // remove the "file:///" protocol
          if (substr($url,0,8)=='file:///') {
            $url=substr($url,8);
            // remove the additional '/' that is currently inserted by utils_url.php
            if (PHP_OS == "WINNT") $url=substr($url,1);
          }
          return new FetchedDataURL(@file_get_contents($url), array(), "");
        }
      }

      function get_base_url() {
        return 'file:///'.$this->base_path;
      }
    }

    function convert_to_pdf($html, $path_to_pdf, $base_path='') {
      $pipeline = PipelineFactory::create_default_pipeline('', 
                                                           '');
      $pipeline->fetchers[] = new MyFetcherMemory($html, $base_path);

      // Override destination to local file
      $pipeline->destination = new MyDestinationFile($path_to_pdf);

      $baseurl = '';
      $media =& Media::predefined('A4');
      $media->set_landscape(true);
      $media->set_margins(array('left'   => 40,
                                'right'  => 5,
                                'top'    => 5,
                                'bottom' => 0));
      $media->set_pixels(1024); 

      global $g_config;
      $g_config = array(
                        'cssmedia'     => 'screen',
                        'scalepoints'  => '1',
                        'renderimages' => true,
                        'renderlinks'  => false,
                        'renderfields' => false,
                        'renderforms'  => false,
                        'mode'         => 'php',
                        'encoding'     => '',
                        'debugbox'     => false,
                        'pdfversion'    => '1.4',
                        'ps2pdf'        => 'ps2pdf',

                        'pslevel'       => '1',
                        'draw_page_border' => false
                        );
      $pipeline->configure($g_config);
      $pipeline->process_batch(array($baseurl), $media);
      }
      ?>


Я определил функцию для получения html

function generate_product_pdf($pid)
{
.......my html code 
return $html;
}

Заранее спасибо ...

1 Ответ

0 голосов
/ 12 сентября 2011

Linux-машина, вероятно, не может получить доступ к изображениям по предоставленному вами URL. Таким образом, это связано либо с DNS (например, жестко запрограммированный IP-адрес или несуществующий домен), либо с хостингом (например, изображения находятся в защищенной папке http-auth), либо с ошибкой в ​​коде (который может проверять наличие ОС). Без средств его отладки трудно сказать.

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