Как создать PDF из строки и отправить его пользователю? - PullRequest
2 голосов
/ 01 ноября 2011

Доброе утро всем,

У меня есть проект, который должен быть развернут на

sharepoint 2007 (wss 3.0) как пользовательская веб-часть. Это

просто кнопка для преобразования определенной строки в 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 = новый документ ();

Веб-часть выдает ошибку при развертывании (Файл

не найдено).

Теперь я застрял. Как правильно конвертировать

эта строка в pdf и отправка пользователю БЕЗ

ХРАНИТЕ ЭТО ГДЕ!

Любая помощь высоко ценится и заранее спасибо :) 1040 *

1 Ответ

1 голос
/ 01 ноября 2011

Посмотрите, помогает ли это в создании байтового массива, я использую 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();
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...