2013-06-19 13 views
8

Zend Framework ve DOMPDF kütüphanesini kullanıyorum. Inline css ile test ettiğimde her şey mükemmel çalışıyor. Ancak css kodunu harici dosya kurallarına taşımayı denediğimde html sayfasına uygulanmaz.DOMPDF harici css dosyasıyla çalışmaz

İşte kodum.

  1. kodu, PDF ("DOMPDF/dompdf_config.inc.php")

require_onceye oluşturmak kontrolörün etki etmesine; (Indeks/dom.phtml) görünümü karşılık gelen

$this->_helper->layout->disableLayout(); 

    $html = $this->view->render('index/dom.phtml'); 

    $dompdf = new DOMPDF(); 
    $dompdf->load_html($html); 
    $dompdf->render(); 

    $pdfContent = $dompdf->output(); 

    file_put_contents('sample.pdf', $pdfContent); 

    die("test"); 

2.Code

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <link type="text/css" href="/themes/css/pdf.css" rel="stylesheet" media="screen"/> 

</head> 
<body> 
    <div>Tamara testing</div> 
    <table border="1"> 
     <tr> 
      <th>Column 1</th> 
      <th>Column 2</th> 
     </tr> 
     <tr> 
      <td>Value 1</td> 
      <td>Value 2</td> 
     </tr> 
    </table> 
</body> 

</html> 

3.And benim css dosyası:

div {color: red;} 

Nasıl Çalışır yapılır?

GÜNCELLEME:

1.In kontrolörün eylem

harici dosyaların

ait
$dompdf->set_base_path(APPLICATION_PATH."/../public/themes/css/"); 

2.In görünüm değişikliği href özelliği için taban yolunu ekleyin:

ben şu şeyi değiştirdi çalışır hale getirmek için bağlantı etiketi. adım 1.

<link type="text/css" href="pdf.css" rel="stylesheet" /> 
+0

Biri bunu bir arama motorunda (tıpkı benim yaptığım gibi) bulduğunda, lütfen DOMPDF :: set_protocol() 'adlı başka bir seçenek olduğunu unutmayın, daha fazla bilgi için aşağıdaki yanıtıma bakın. –

cevap

9

Bu aslında hiçbir şey Zend Framework ile ilgisi var ayarlanan temel yoluna göreceli olun, ancak gelen "dış" dosyaları yüklemek için DOMPDF doğru yolu tedarik etmek gerekir.

$dompdf = new DOMPDF(); 
$dompdf->set_base_path(realpath(APPLICATION_PATH . '/path/to/css/')); 
$dompdf->load_html($html); 
$dompdf->render(); 

bu özellik için de DOMPDF ait manual bakınız.

5

@Jurian Sluiman, maalesef cevabın bana yardım etmesine rağmen doğru yolda.

Ben DOMPDF::set_protocol() kullanıyordum benim için çalıştı çözüm bulmak amacıyla biraz zaman harcamak zorunda kaldı:

burada
$dompdf->set_protocol(WWW_ROOT); 
$dompdf->set_base_path('/'); 

WWW_ROOT başvurumun Webroot'un klasörüne CakePHP constant işaret olduğunu. Bir eğik çizgi olduğunu unutmayın.

En iyi yanı, bunun set_protocol()'un yanlış kullanımı gibi gözükmesidir. Ama ben CSS çalışmasını yaptığı sürece iyiyim. https://groups.google.com/forum/?_escaped_fragment_=topic/dompdf/uBWdQbug_dM

  • bu kez başkasının birkaç saat kaydeder http://code.google.com/p/dompdf/wiki/CSSCompatibility
  • Umut https://github.com/dompdf/dompdf/search?q=set_protocol

    • .