如何从字符串创建PDF并将其发送给用户?

时间:2011-11-01 05:59:37

标签: c# sharepoint pdf

大家早上好,

我有一个应该部署在

上的项目

sharepoint 2007(wss 3.0)作为自定义Web部件。它是

只需一个按钮即可将某个字符串转换为pdf

文件并将其发送给用户。我正在使用c#.NET。我有

以下代码:

HttpContext.Current.Response.AddHeader"ContentDispositio
n", "attachment;filename=foo.pdf");
                HttpContext.Current.Response.AddHeader("Content-Length", bb.Length.ToString());
                HttpContext.Current.Response.ContentType = "application/pdf";
                HttpContext.Current.Response.BinaryWrite(bb);

bb是一个字节数组。 这对于“发送文件

而言工作正常

到用户“part。

我面临的问题是创建字节

阵列。我不知道如何从

创建一个字节数组

可以转换为PDF的字符串。我尝试使用

iTextSharp,但由于某种原因,我总是面对

此行错误:

文件d =新文件();

Web部件在部署时给出了错误(文件

未找到。)

现在我被卡住了。什么是转换的适当方式

此字符串为pdf并将其发送给用户WITHOUT

随时随地存放!

任何帮助都非常受欢迎&提前谢谢你:)

1 个答案:

答案 0 :(得分:1)

看看这是否有助于创建字节数组,我使用html解析器将我的xml文档转换为pdf -

// Using iTextSharp to construct a PDF document
            // Create a document-object
            Document document = new Document(PageSize.A4);

            // Create a writer that listens to the document
            // and directs a XML-stream to a MemoryStream
            using (MemoryStream ms = new MemoryStream())
            {
                PdfWriter.GetInstance(document, ms);
                document.Open();


                System.Xml.XmlTextReader _xmlr;
                if (String.IsNullOrEmpty(errorMsg))
                    _xmlr = new System.Xml.XmlTextReader(new StringReader(GetTransferedData(content)));
                else
                    _xmlr = new System.Xml.XmlTextReader(new StringReader(@"<html><body>Error Message:" + errorMsg + "</body></html>"));
                iTextSharp.text.html.HtmlParser.Parse(document, _xmlr);
                document.Close();                 
                ms.Flush();
                byte[] data = ms.ToArray();

                Response.Clear();
                Response.ClearHeaders();
                Response.ClearContent();
                Response.Buffer = true;
                Response.ContentType = "application/pdf";
                Response.BinaryWrite(data);
                Response.End();
                ms.Close();
            }