2015-05-29 3 views
0
var paper = _repo.VeryLatestPaper().Result; 
List list = new List(List.ORDERED); 
paper.Questions.ForEach(q => list.Add(q.Message)); 

var doc1 = new Document(); 

string path = "B:\\Test\\PDF"; 
PdfWriter writer = PdfWriter.GetInstance(doc1, new FileStream(path + "/Doc1.pdf", FileMode.Create)); 
writer.PageEvent = new PDFWriterEvents("This is a Test"); 


doc1.Open(); 

//new XMLParser().Parse(new StringReader(text)); 

//XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc1, new StringReader(text)); 

doc1.Add(list); 

doc1.Close(); 

Я использую приведенный выше код с последней itextsharp, чтобы создать список PDF. Пока он работает очень хорошо, пока я не хочу конвертировать каждый список itextsharp из html в, по крайней мере, в обычный текст или, предпочтительно, в форматированный текст с изображениями. Кто-то, пожалуйста, помогите мне конвертировать q.Message в pdf-файл с открытым текстом, готовый для рендеринга в pdf-файл с XMLWorker и этот код здесь.метод для преобразования HTML из базы данных в формат визуализируемых в формате PDF с iTextSharp

//new XMLParser().Parse(new StringReader(text)); 

//XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc1, new StringReader(text)); 

Пожалуйста, обратите внимание, что я не получаю HTML из файла, то из базы данных ...

+1

Вы можете использовать другие виды потоков, чем просто потокового видео , Например, вы можете загрузить HTML в память, например, передать MemoryStream или, возможно, получить представление потока из поля базы данных напрямую. [Связанный вопрос об использовании 'PdfWriter.GetInstance' с потоком памяти] (http://stackoverflow.com/questions/2815761/create-pdf-in-memory-instead-of-physical-file). – GolezTrol

+0

привет Golez, позвольте мне выскочить ... – kabue7

ответ

-1

Он имеет возможность конвертировать HTML-файл в формате PDF в.

Он уже ответил here. Здесь я делаю некоторые шаги.

Необходимое пространство имен для преобразования являются:

using iTextSharp.text; 
using iTextSharp.text.pdf; 

и для преобразования и загрузки файла:

//Create a byte array that will eventually hold our final PDF 
      Byte[] bytes; 

      //Boilerplate iTextSharp setup here 
      //Create a stream that we can write to, in this case a MemoryStream 
      using (var ms = new MemoryStream()) 
      { 

       //Create an iTextSharp Document which is an abstraction of a PDF but **NOT** a PDF 
       using (var doc = new Document()) 
       { 

        //Create a writer that's bound to our PDF abstraction and our stream 
        using (var writer = PdfWriter.GetInstance(doc, ms)) 

        { 

         //Open the document for writing 
         doc.Open(); 


         string finalHtml = string.Empty; 
         // read your html by database or from a html file here and store it into finalHtml e.g. a string 



         //XMLWorker also reads from a TextReader and not directly from a string 
         using (var srHtml = new StringReader(finalHtml)) 
         { 

          //Parse the HTML 
          iTextSharp.tool.xml.XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, srHtml); 
         } 



         doc.Close(); 
        } 
       } 

       //After all of the PDF "stuff" above is done and closed but **before** we 
       //close the MemoryStream, grab all of the active bytes from the stream 
       bytes = ms.ToArray(); 
      } 





     //clear the response 
      Response.Clear(); 
      MemoryStream mstream = new MemoryStream(bytes); 
     //define response content type 
      Response.ContentType = "application/pdf"; 
     //give the name of file of pdf and add in to header 
      Response.AddHeader("content-disposition", "attachment;filename=invoice.pdf"); 
      Response.Buffer = true; 
      mstream.WriteTo(Response.OutputStream); 
      Response.End(); 

Try поставить все CSS встроенный

+0

Поскольку вы не внесли никаких изменений в код, кроме удаления немного, это, вероятно, было бы лучше, как комментарий, указывающий на [оригинальный ответ, который был скопирован с] (http://stackoverflow.com/a/25164258/231316) –

+0

Ok @ Chris Hass, позаботится об этом сейчас. ☺. Я только добавил этот заголовок ответа в формате pdf. –

Смежные вопросы