2011-11-18 20 views
7

iTextSharp.dllを使用してPDFを生成していますが、そのCSSを適用できないという問題があります。iTextsharp.dllを使用してPDFを生成中にCSSを適用しない

iTextSharp.text.html.simpleparser.StyleSheet styles = new   iTextSharp.text.html.simpleparser.StyleSheet(); 

    styles.LoadTagStyle("#headerdiv", "height", "30px"); 
    styles.LoadTagStyle("#headerdiv", "font-weight", "bold"); 
    styles.LoadTagStyle("#headerdiv", "font-family", "Cambria"); 
    styles.LoadTagStyle("#headerdiv", "font-size", "20px"); 
    styles.LoadTagStyle("#headerdiv", "background-color", "Blue"); 
    styles.LoadTagStyle("#headerdiv", "color", "White"); 
    styles.LoadTagStyle("#headerdiv", "padding-left", "5px"); 

    HTMLWorker worker = new HTMLWorker(document); 
    worker.SetStyleSheet(styles); 


    // step 4: we open document and start the worker on the document 
    document.Open(); 
    worker.StartDocument(); 
    // step 5: parse the html into the document  
    worker.Parse(reader); 
    // step 6: close the document and the worker  
    worker.EndDocument(); 
    worker.Close(); 
    document.Close(); 

答えて

12

ここで起こって物事のカップルがあります:

<div id="personal" class="headerdiv"> 
     Personal Data 
</div> 

今、私の.aspx.csコードはこのようなものです:私は1つのdivを持っています。まず第一に、iTextとiTextSharpのHTML/CSSパーサーは完全ではありません。彼らは確かに非常に強力ですが、まだ行く方法があります。それぞれのバージョンが良くなるので、常に最新のバージョンを使用していることを確認してください。

第2に、XMLWorkerと呼ばれるiText/iTextSharpのアドオンで、より多くのHTML/CSSアクティビティを見てきました。あなたは "スタイルを読み込む"ことはもうありません。生のHTML/CSSを渡すだけで、多くのことが分かります。 examples hereを見ることができます。supported CSS attributes heredownload it hereのリストを参照してください(2つの欠損ファイルherehereを取得してください)。

第3のLoadTagStyleは、CSSタグまたはクラスではなく、HTMLタグのスタイル属性を読み込むためのものです。

styles.LoadStyle("<classname>", "<attribute>", "<value>"); 

は、残念ながら、この方法は、まだあなたはそれが常にやりたいしません:あなたは、クラスによってロードするために LoadStyleを使用したいです。たとえば、フォントサイズを変更するには、あなたが言うと思うだろう:

styles.LoadStyle("headerdiv", "font-size", "60ptx); 

をしかし、それはあなたが唯一の相対的なHTMLのフォントサイズ(1,2、-1など)を使用することができます動作させるためにまたはPTサイズとあなたがsizeプロパティを使用する必要があります。

styles.LoadStyle("headerdiv", "size", "60pt"); 
//or 
styles.LoadStyle("headerdiv", "size", "2"); 

LoadStyleは正直に部分的にしか完成したと私は実際にそれを使用しないことをお勧めします付け足しのように感じています。代わりに、私はあなたができるならば、スタイルが直接インライン属性を書いてお勧めします:

string html = "<div id=\"personal\" class=\"headerdiv\" style=\"padding-left:50px;font-size:60pt;font-family:Cambria;font-weight:700;\">Personal Data</div>"; 

明らかにこれはCSSのポイントを破り、彼らは上記の新しいXMLWorkerに取り組んでいる理由は、再び、それはです。

最後に、名前でフォントを使用するには、あなたが最初にiTextSharpに登録する必要があり、それはそれらを探しに行くことはありません。

iTextSharp.text.FontFactory.Register(@"c:\windows\fonts\cambria.ttc", "Cambria"); 
+0

こんにちはこれはokです...しかし、私は使用して背景色効果を適用カントうまくいけば... plz私の解決策を教えてください... – Kartik

+1

残念なことに、背景色のサポートを取得する唯一の2つの方法は、テーブルを使用するか、独自に図形を描くことです。 –

+0

Thnxs Chris Haas sir ....私は最後の二日間.....それはur有用な情報のためのthnxs .....それを試しています – Kartik

1

誰かがまだこれで問題を抱えている場合。 itextsharp(現在5.3.2)の最新バージョンは、HTMLWorkerプロセッサを大幅に改善しています。

あなたはここでそれを得ることができます:http://sourceforge.net/projects/itextsharp/

1

その背景色を参照するための正しい方法はHtmlTagsクラスを介してである

styles.LoadTagStyle(HtmlTags.HEADERCELL, HtmlTags.BACKGROUNDCOLOR, "Blue"); 
関連する問題