2012-01-08 3 views
12

में सीएसएस फ्लोट के साथ काम करना मैं एक-दूसरे के बगल में 2 divs को स्थानांतरित करने के लिए फ्लोट का उपयोग कर रहा हूं।html2pdf

<a href="printbox.php">print</a> 
<?php ob_start(); ?> 
<style> 
    #sidedish{ 
     float: left; 

     border: 1px solid black; 
     width: 100px; 
     height: 100px; 
    } 
    #maindish{ 
     float: right; 
     width: 200px; 
     border: 1px solid black; 
     height: 100px; 
     text-align: center; 
    } 

    #container{ 
     width: 304px; 
     height: 100px; 
     border: 1px solid black; 
    } 
</style> 

<div id="container"> 
<div id="sidedish"></div> 
<div id="maindish"><div id="box">name</div></div> 
</div> 
<?php $_SESSION['boxes'] = ob_get_contents(); ?> 

यहाँ क्या कर printbox, यह सिर्फ एक पीडीएफ में बफ़र डेटा प्रस्तुत हुई है, लेकिन किसी भी तरह तैरता है कि निर्धारित किया गया प्रक्रिया में खो गए थे है।

<?php require_once('html2pdf/html2pdf.class.php'); ?> 
<?php 
$html2pdf = new HTML2PDF('P', 'A4', 'en', true, 'UTF-8', array(0, 0, 0, 0)); 
$html2pdf->writeHTML($_SESSION['boxes']); 

$html2pdf->Output('random.pdf'); 
?> 

यह एचटीएमएल पर ठीक काम करता है:

enter image description here

लेकिन जब मैं प्रिंट पर क्लिक करें यह इस में बदल जाता है:

enter image description here

किसी भी विचार क्या समस्या है?

+1

आपकी उल्लिखित समस्या नहीं मिली। http://jsfiddle.net/DYGvR/show/ देखें, क्रोम क्लिक माउस दाएं, पेज प्रिंट में परीक्षण करें। – Giberno

+0

क्या आप प्रिंट करने के लिए ब्राउज़र का उपयोग कर रहे हैं? Printbox.php क्या करता है? मुझे लगता है कि वह प्रिंट लिंक पर क्लिक कर रहा है और printbox.php किसी भी तरह दस्तावेज़ पर चौड़ाई निर्धारित कर रहा है। – zethus

+0

कृपया मेरा अपडेट देखें –

उत्तर

23

व्यक्तिगत अनुभवों से बात करते हुए, मैं कहूंगा कि HTML2PDF के आउटपुट स्टाइलिंग, सबसे अच्छा, गूढ़ काले जादू विज्ञान है। इसके लिए मुख्य कारण हैं:

  • वर्ग केवल & चयनकर्ताओं
  • सीएसएस अनुकूलता undocumented है
  • पीडीएफ HTML इनपुट
  • के संबंध में डिबग करने के लिए असंभव है सीएसएस शैलियों की एक (अपेक्षाकृत छोटे) सबसेट का समर्थन करता है

निष्पक्ष होने के लिए, यह केवल HTML2PDF लेकिन also for the TCPDF that HTML2PDF uses के लिए समस्या नहीं है।

यह संभव हो सकता है कि HTML2PDF, बस एक लगभग-शून्य-सेटअप, TCPDF के लिए त्वरित & आसान वैकल्पिक इंटरफ़ेस किया जा रहा है, और अधिक सीएसएस समर्थन को काट देता है - लेकिन मुझे यकीन है कि भी TCPDF समर्थन नहीं करेंगे कर रहा हूँ float ठीक से

<?php 
    $isPdf = (/* condition that tells us we're outputting PDF */) ? true : false; 
    if ($isPdf) { 
     echo "<table><tr><td>"; 
    } 
?> 
<div class="float"> ... </div> 
<?php 
    if ($isPdf) { 
     echo "</td><td>"; 
    } 
?> 
<div class="float"> ... </div> 
<?php 
    if ($isPdf) { 
     echo "</td></tr></table>"; 
    } 
?> 
+1

सीएसएस वर्कअराउंड को समझने की कोशिश करने के बाद मैं अपने बालों को फेंकने के बाद यह बेहद सहायक था। टेबल पर वापस !! इसके अलावा, fyi, मैंने पूरी तरह से पेज-इन-प्रश्न की एक अलग प्रति बनाई, और यदि यह पीडीएफ के लिए था, तो वहां सीधे। यदि यह नहीं था, तो गैर-टेबल पर सीधे। – Cyprus106

+2

मुझे एक ही समस्या थी। मेरा समाधान फ्लोट्स की बजाय पूर्ण स्थिति का उपयोग करना था, जो अच्छी तरह से काम करता था, लेकिन आपको कंटेनर आयाम सेट करने की आवश्यकता है। – TheFrozenOne

+0

दरअसल, एचटीएमएल 2 पीडीएफ पूर्ण स्थिति, मार्जिन और पैडिंग सहित टीसीपीडीएफ की तुलना में कहीं अधिक सीएसएस का समर्थन करता है। उल्लेख के लायक। –

6

आप देख सकते हैं:

<table> 
    <tr> 
     <td><div class="float"> ... </div></td> 
     <td><div class="float"> ... </div></td> 
    </tr> 
</table> 

तुम भी सार्वजनिक HTML से इस शर्मिंदगी छिपाने सकता है:

सबसे अच्छा समाधान का है कि आप इस्तेमाल कर सकते हैं नब्बे के दशक के लिए अपने अस्थायी divs भेजने के लिए है यहां फ्रेंच में त्वरित दस्तावेज़ीकरण ऑनलाइन: http://demo.html2pdf.fr/examples/pdf/about.pdf

('लेस फ्लोट एन सोंट गेरेस क्यू ला ला बालीज आईएमजी')

= फ़्लोट केवल कक्षा द्वारा img markups के लिए संभाले जाते हैं।

हैंडल सीएसएस गुण दस्तावेज़ में भी सूचीबद्ध हैं।