2017-07-03 5 views
0

PDF文書を作成するのにITextSharpを使用しています。ドキュメントの作成の一環として、特定のページのウィンドウ内にHTMLブロックをレンダリングする必要があります。私はHTMLをレンダリングするために以下のコードを使用しています。意外にも、HTMLをレンダリングしていません。すべてのコンテンツが長方形に収まる場合 私はあなたのラインがITextSharp - ColumnTextでHTMLをレンダリングすると消えてしまいます

int status = column.Go(true); 

ツバメ、それだけでシミュレートしている場合でも、HTML Here

public override Rectangle Draw(Rectangle curRectangle) 
    { 
     try 
     { 
      var column = new ColumnText(this.DocRenderer.PdfDocContentByte); 
      string css = "p {font-family:HELVETICA; font-style:normal; color:black; font-size:10px}" 
       + " li {font-family:HELVETICA; font-style:normal; color:black;font-size:10px}"; 
      foreach (var element in XMLWorkerHelper.ParseToElementList(FileContents of guide.html, css)) 
      { 
       column.AddElement(element); 
      } 

      curRectangle = this.SimulateHeight(curRectangle, column); 
      column.SetSimpleColumn(curRectangle); 
      column.Go(false); 
     } 
     catch (Exception ex) 
     { 
      Logger.LogError(ex.Message, ex); 
     } 
     return curRectangle; 
    } 

    private Rectangle SimulateHeight(Rectangle curRectangle,ColumnText column) 
    { 

     float top = 15; 
     column.SetSimpleColumn(curRectangle.Left, curRectangle.Bottom, curRectangle.Right, top); 
     int status = column.Go(true); 
     top = column.YLine-1; 
     return new Rectangle(curRectangle.Left, curRectangle.Bottom, curRectangle.Right, top); 
    } 

答えて

1

を接続したすべての複合コンテンツがcolumnに加えます。例えば、このよう

(これは。簡単に同じColumnTextにはまだ多くの複合コンテンツの描画をシミュレートすることができます)status値がColumnText.NO_MORE_TEXTであれば、あなたは再びそれを追加する必要があります

private iTextSharp.text.Rectangle SimulateHeight(iTextSharp.text.Rectangle curRectangle, ColumnText column) 
{ 
    var compositeContent = new List<IElement>(column.CompositeElements); 
    float top = 15; 
    column.SetSimpleColumn(curRectangle.Left, curRectangle.Bottom, curRectangle.Right, top); 
    int status = column.Go(true); 
    if (ColumnText.NO_MORE_TEXT == status) 
    { 
     foreach (var element in compositeContent) 
     { 
      column.AddElement(element); 
     } 
    } 
    top = column.YLine - 1; 
    return new iTextSharp.text.Rectangle(curRectangle.Left, curRectangle.Bottom, curRectangle.Right, top); 
} 

実際にもリストがフィットしなかったトップレベルの要素を空に部分的得る他statusの値について:このように。あなたのケースでは、しかし、1つの最上位要素、divがあるので、それが完全に収まらない場合、それは残っています。余談として


は、ページの実際の底部近くに位置top値を使用するので、実際にy座標底あります。このような名前はかなり誤解を招く。

関連する問題