2013-06-19 9 views
8

के साथ काम नहीं करता है मैं ज़ेंड फ्रेमवर्क और डीओएमपीडीएफ लाइब्रेरी का उपयोग कर रहा हूं। जब मैं इनलाइन सीएसएस के साथ परीक्षण करता हूं तो सब कुछ पूरी तरह से काम करता है। लेकिन जब मैंने बाहरी फ़ाइल नियमों में सीएसएस कोड को स्थानांतरित करने का प्रयास किया तो HTML पृष्ठ पर लागू नहीं किया गया है।डीओएमपीडीएफ बाहरी सीएसएस फ़ाइल

मेरा कोड यहां है।

  1. नियंत्रक की कार्रवाई है, जो पीडीएफ

require_once उत्पन्न ("DomPdf/dompdf_config.inc.php") संहिता;

$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"); 

इसी दृश्य (सूचकांक/dom.phtml) की 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 मेरी सीएसएस फ़ाइल:

div {color: red;} 

कैसे काम करता है बनाने के लिए?

अद्यतन:

1.In नियंत्रक की कार्रवाई बाहरी फ़ाइलें

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

2.In दृश्य परिवर्तन href विशेषता के लिए आधार पथ जोड़ें:

यह काम करता है मैं निम्नलिखित बातें बदल बनाने के लिए लिंक टैग यह आधार पथ कदम 1.

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

यदि किसी को इसे किसी खोज इंजन (जैसे मैंने किया) पर पाता है, तो कृपया ध्यान दें कि 'DOMPDF :: set_protocol()' नामक एक और विकल्प है, अधिक जानकारी के लिए नीचे मेरा उत्तर देखें। –

उत्तर

9

इस तथ्य को कुछ भी नहीं में Zend फ्रेमवर्क के साथ क्या करना है में स्थापित करने के लिए रिश्तेदार है, पर आप से "बाहरी" फ़ाइलों को लोड करने DomPDF सही रास्ते भी देनी होगी।

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

इस सुविधा के लिए यह भी देखें DomPDF की manual

5

@ जूरियन स्लूइमान सही रास्ते पर है, हालांकि उसके जवाब ने मेरी मदद नहीं की, दुर्भाग्य से।

मैं समाधान है कि मेरे लिए काम किया है, जो DOMPDF::set_protocol() उपयोग कर रहा था पता लगाने के लिए आदेश में कुछ समय बिताने के लिए किया था:

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

यहाँ WWW_ROOT अपने आवेदन की webroot फ़ोल्डर में एक CakePHP constant की ओर इशारा करते है। ध्यान दें कि इसमें एक पीछे की ओर स्लैश है।

सबसे अच्छा हिस्सा यह है कि यह set_protocol() के अनुचित उपयोग की तरह लगता है। लेकिन जब तक यह सीएसएस काम करता है तब तक मैं ठीक हूं।

आशा इस समय की किसी और कुछ ही घंटों की बचत होती है।

संबंधित मुद्दे