字符串操作/提取子字符串&使用iTextSharp从HTML文件生成的PDF文件,这是一个用于创建PDF文件的.NET PDF库

时间:2016-11-15 22:10:09

标签: javascript html .net asp.net-mvc itext

我在使用iTextSharp和String操作/提取包含“[number]”的子字符串并生成PDF文件时遇到问题。我之前的问题发布在这里:     String manipulation & PDF output file

我正在使用此函数来提取包含" [..]"

的子字符串
<script>
</script>

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

这是一个:ASP.Net MVC网页。视图的网格包含Location,RoomName ....和PDF打印的复选框。网格上的记录/数据来自SQL db。此位置字段数据包含最后的几个记录&#34; [编号]&#34;。如果用户在单击&#34;打印到PDF&#34;之后选择一个记录的复选框;按钮应该生成PDF文件。

我正在使用string contents = System.IO.File.ReadAllText(HTMLFilePath)来读取Location,RoomName所在的文件。它是这个Html文件的一部分。

“打印”按钮后面的代码以:

开头
public ActionResult ReportsPDF(PrintFormReportModel Obj) { string HTMLFilePath = Server.MapPath("~/Views/Reports/RoomSignReport.htm");

此文件RoomSignReport.htm是我试图通过从包含[..]的子字符串中提取位置数据来修改的文件。任务是提取包含[number]的子字符串,这就是我想出使用函数extract()的原因。不幸的是,使用<script>函数提取(.. </script>会在PDF文件的顶部显示<script>标记的内容,而不是在此处显示结果:<p id="demo"></p>

1 个答案:

答案 0 :(得分:0)

我自己解决这个问题。对于可能需要此主题帮助的任何人,我在此处添加代码段:

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;