Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#Stringbuilder:将Stringbuilder对象持久化到varchar列中-SQL Server_C#_Itextsharp - Fatal编程技术网

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

c#Stringbuilder:将Stringbuilder对象持久化到varchar列中-SQL Server,c#,itextsharp,C#,Itextsharp,我使用ItextSharp库(方法:GetResultantText())从PDF文档中读取文本块 考虑以下段落中概述/格式化的文本: *“第一款 第二段。 第n段 "* 是否有一种方法可以使用C#StringBuilder对象或其他方法来存储文本,同时保留FOMATT?:包含回车符和段落等,并将值存储在SQL Server 08中的varchar字段中 最终,我打算将文本存储到一个varchar字段中,并希望保留换行符、回车符[basic fomatting metadata],否则提取的文

我使用ItextSharp库(方法:GetResultantText())从PDF文档中读取文本块

考虑以下段落中概述/格式化的文本:

*“第一款

第二段。

第n段 "*

是否有一种方法可以使用C#StringBuilder对象或其他方法来存储文本,同时保留FOMATT?:包含回车符和段落等,并将值存储在SQL Server 08中的varchar字段中

最终,我打算将文本存储到一个varchar字段中,并希望保留换行符、回车符[basic fomatting metadata],否则提取的文本是一个文本块,在呈现时不可读

我估计对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();

因此,pdfText被嵌入到announcement字段中。干杯。

我认为它不应该删除格式,如果这样做,请在每个段落后面使用“
\r\n
”并存储它

我不认为它应该删除格式,如果这样做,则在每个段落后面使用“
\r\n
”并存储它

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


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

您正确地说,单独使用
StringBuilder
将删除格式,并仅保留新行字符。如果您真的想将包含格式信息的字符串存储到数据库中,我建议您将其存储为预定义的格式——比如XML,甚至,然后以相同的方式检索它,以便将其提供给iTextSharp


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

我不认为格式会消失…我不认为格式会消失…结果是格式“\r\n”确实会保留,并通过从表中获取值并调用Console.writeline()进行验证。最初我是从SQLServerManagementStudio复制值directoy并粘贴到文本文件中——这不是正确的验证方法。谢谢。通过从表中获取值并调用Console.writeline()来验证格式“\r\n”是否确实保留。最初我是从SQLServerManagementStudio复制值directoy并粘贴到文本文件中——这不是正确的验证方法。谢谢
[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; }
    }