我在使用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>
答案 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;