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字段中。干杯

c#Stringbuilder:将Stringbuilder对象持久化到varchar列中-SQL Server

我认为它不应该删除格式,如果这样做的话,在每个段落后面使用"'r'n",然后存储它。

您所说的使用StringBuilder本身将删除格式,并且只保留新行字符,这是正确的。如果您真的想将带有格式化信息的字符串存储到数据库中,我建议将其存储为预定义的格式,如XML、RTF甚至HTML,然后以相同的方式检索,以便将其提供给iTextSharp。

我可以想到的另一种方法是直接生成PDF,然后将二进制流作为nText或clob存储到数据库中。不过,这不是最佳做法。