2013-03-14 79 views
1

基本上,我使用mpdf(一個自定義PHP類)爲網站用戶創建動態pdf。除了一件事之外,這一切都運行良好。我使用的是點的領導人在我的網站的HTML/CSS創建這種效果:如何使用php填充週期列表項目和價格?

http://jsfiddle.net/j6JWT/7/

dl { width: 400px } 
dt { float: left; width: 300px; overflow: hidden; white-space: nowrap } 
dd { float: left; width: 100px; overflow: hidden } 

dt span:after { content: " .................................................................................." } 

然而,MPDF當它生成PDF格式完全忽略了這個CSS。如果有人熟悉mpdf,如果你告訴我爲什麼這麼做,我會很感激。

事情是,使用PHP實際生成期間可能是一個更好的主意。爲了澄清,我希望通過PHP實現這種效果http://jsfiddle.net/j6JWT/7/

我在概念化方面遇到麻煩的是如何使它動態化。這些項目來自數據庫,並且一些列表項目非常長,因此如果您瞭解,它們之間的點和價格之間的點就會減少。

任何和所有幫助價值!

+0

是等寬字體中的項目嗎? – Popnoodles 2013-03-14 03:06:36

+0

如果您只是想要填充字符串,請查看http://php.net/manual/en/function.str-pad.php。也許看一下可以正常使用CSS的選項也很有趣。看看https://code.google.com/p/wkhtmltopdf/ – 2013-03-14 03:12:26

+0

@popnoodles很確定它不是一個等寬字體。 http://www.google.com/webfonts/specimen/Didact+Gothic – Starkers 2013-03-14 03:12:55

回答

2

我不認爲這是一個安全的解決方案,用CSS或PHP生成「...」內容,因爲您不確定策略的行爲。它純粹是一個演示問題。

可以產生一些更多的CSS

dl { width: 450px } 
dt { float: left; height: 20px; width: 300px; display: block; position: relative; } 
dd { float: left; height: 16px; padding-top: 6px; padding-left: 5px; width: 120px; overflow: hidden } 
dt { border-bottom: 1px dotted black; } 
dt span { border: 0; display: inline-block; height: 20px; position: absolute; left: 0; top: 6px; background-color: #FFFFFF; padding-right: 5px; } 

這裏是一個工作示例相同的解決方案:jsfiddle

你只需要檢查PDF類是妥善處理這些CSS規則。

+0

這是一個偉大的工作! – Starkers 2013-03-19 19:45:53

0

容易,如果它是一個等寬字體。

echo '<pre>'; 
// pretend we know the maximum item name strlen, these dots would be that length + 1 at least 
$maxdots='........................................................................'; 
$maxlen=strlen($maxdots); 

$items=array(array('Drug 1', '10ml'), array('Another drug', '20ml')); 
foreach ($items as $item){ 
    $item[1]=substr($maxdots.$item[1], strlen($item[0])-$maxlen); 
    echo $item[0].$item[1]."\n"; 

} 

,如果它不是等寬的另一種方法是使用重複的背景圖片

<div class="dottedrow"> 
    <span class="title">Drug 1</span> 
    <span class="size">10ml</span> 
</div> 

使用CSS

.dottedrow{ 
    background:url(dots.png) bottom left repeat-x; /* or is it repeat-y?*/ 
    display:block; 
} 
.dottedrow span{ 
    background:#fff; /* knock out the image */ 
    float:left; 
} 
.dottedrow span.title{ 
    text-align:left; 
    width:70%; 
} 
.dottedrow span.size{ 
        text-align:right;  
        width:30%; 
    } 

現在我的想法。