c#Stringbuilder:将Stringbuilder对象持久化到varchar列中-SQL Server
本文关键字:varchar 列中 -SQL Server 持久化 Stringbuilder 对象 c#Stringbuilder | 更新日期: 2023-09-27 17:57:56
我使用ItextSharp库(方法:GetResultantText())从PDF文档中读取了文本块
考虑文本在段落中的概述/格式:
*"第一段
第二段。…
第n段"*
有没有一种方法可以使用C#StringBuilder对象,或者可能是另一种方法,在保留格式的同时存储文本?:包含回车和段落等,并将值存储在SQL Server 08中的varchar字段中。
最终,我打算将文本存储到varchar字段中,并希望保留换行符、回车符[基本格式元数据],否则提取的文本是一个文本块,在渲染时无法读取。
我认为在StringBulder对象上调用toString()方法会删除文本中除终止的[newlinecharacter]之外的所有中间格式字符。
SimpleTextExtractionStrategy strategy;
//StreamWriter writer = new StreamWriter("c:''pdfOutput.txt");
for (int i = 1; i <= reader.NumberOfPages; i++)
{
try
{
strategy = parser.ProcessContent(i, new SimpleTextExtractionStrategy());
buffer.AppendLine(strategy.GetResultantText());
//writer.WriteLine(strategy.GetResultantText());
}
catch (IndexOutOfRangeException e) { }
}
pdfText = buffer.ToString();
Console.WriteLine("* End: Text Extraction Process ...");
return pdfText = buffer.ToString();
如果我取消注释并输出到文本文件,则会保留格式设置。然而,如果我将生成的文本保存到一个实体中,该实体定义为:我得到的只是一个文本块:
[System.Data.Linq.Mapping.Table(Name = "ReportsText")]
public class ReportsText
{
[Column (IsDbGenerated = true, AutoSync=AutoSync.OnInsert)]
public int ID { get; set; }
[Column(IsPrimaryKey = true, AutoSync = AutoSync.OnInsert)]
public String image { get; set; }
[Column] public String announcement { get; set; }
}
因此,pdfText被集成到annouuncement字段中。干杯
我认为它不应该删除格式,如果这样做的话,在每个段落后面使用"'r'n
",然后存储它。
您所说的使用StringBuilder
本身将删除格式,并且只保留新行字符,这是正确的。如果您真的想将带有格式化信息的字符串存储到数据库中,我建议将其存储为预定义的格式,如XML、RTF甚至HTML,然后以相同的方式检索,以便将其提供给iTextSharp。
我可以想到的另一种方法是直接生成PDF,然后将二进制流作为nText
或clob存储到数据库中。不过,这不是最佳做法。