2016-11-15 5 views
0

iTextSharpとString操作を使用する際に問題があります。 PDFファイルを作成します。私の前の質問はここに投稿されました: String manipulation & PDF output file文字列操作/ PDFファイルを作成するための.NET PDFライブラリiTextSharpを使用してHTMLファイルから生成された部分文字列とPDFファイルを抽出します

は私が含まれている部分文字列を抽出するために、この機能を使用しています「[..]」

<script> 
</script> 

<script> 
function extract() { 
    var str = "van4[15]"; 
    return str.substring(0, str.lastIndexOf("[")); 
} 
document.getElementById("demo").innerHTML = extract(); </script> 

それはです:ASP.Net MVC Webページ。ビューにはLocation、RoomName ....のグリッドとPDF印刷用のチェックボックスがあります。グリッド上のレコード/データはSQLデータベースから取得されます。このLocationフィールドのデータには、最後の[[number]]にあるレコードの数が含まれます。ユーザーが「PDFに印刷」ボタンをクリックした後に1つのレコードのチェックボックスを選択すると、PDFファイルが作成されます。

私はstring contents = System.IO.File.ReadAllText(HTMLFilePath)を使用して、Location、RoomNameのファイルを読み取ります。これはこのHtmlファイルの一部です。

印刷]ボタンの背後にあるコードで始まる:

このファイルRoomSignReport.htm私は[..])場所データを形成含まれている部分文字列を抽出することにより、変更しようとしているものです
public ActionResult ReportsPDF(PrintFormReportModel Obj) { string HTMLFilePath = Server.MapPath("~/Views/Reports/RoomSignReport.htm"); 

。タスクは[number]を含む部分文字列を抽出することです。これは、関数extract()を使用するアイデアが出てきた理由です。私は自分でこのタスクを解決する<p id="demo"></p>

答えて

0

このトピックについてのヘルプが必要な場合があります誰のために:残念ながら<script>関数extract(.. PDFの上部に</script>ディスプレイではなく、ここで結果を表示するので<script>タグの内容をファイルを使用して。コードスニペットをここに追加します:

if (ReportList.Count > 0) 
{ 
    PdfWriter writer = PdfWriter.GetInstance(Report, new FileStream(FullPath, FileMode.Create)); 
    Report.Open(); 
    try 
    { 
     if (ListRoomSign.Count > 0) 
     { 
      foreach (var ObjReportList in ReportList) 
      { 
       foreach (var ObjRoomSignList in ListRoomSign) 
       { 
        ..... 
        string contents = System.IO.File.ReadAllText(HTMLFilePath); 

        //Remove square brackets value from room name 
        if (ObjReportList.Location.Contains("[")) 
        { 
         ObjReportList.Location = ObjReportList.Location.ToString().Substring(0, ObjReportList.Location.ToString().LastIndexOf("[")); 
        } 
        // 
        contents = contents.Replace("[RoomName]", ObjReportList.Location); 
        var parsedHtmlElements = HTMLWorker.ParseToList(new StringReader(contents), null); 
        foreach (var htmlElement in parsedHtmlElements) 
        { 
         Report.Add(htmlElement as IElement); 
        } 
        Report.NewPage();           
       } 
      } 
     } 

     Report.Close(); 
    } 
    catch (Exception) 
    { 
     FullPath = string.Empty; 
    } 
} 
return FullPath; 
関連する問題