2014-07-04 15 views
5

Konwertuję niektóre html na pdf. To działa dobrze, ale gdy mam znacznik zakotwiczenia w moim html ja się błąd dokument nie ma stronitextsharp Błąd "dokument nie ma stron", gdy mam znacznik zakotwiczenia

Mój kod jest

byte[] data; 
using (var sr = new StringReader(sw.ToString())) 
{ 
    var st = new StyleSheet(); 

    GetStyleSheetForUnicodeCharacters(st); 
    using (var ms = new MemoryStream()) 
    { 
     using (var pdfDoc = new Document()) 
     {        
      using (var w = PdfWriter.GetInstance(pdfDoc, ms)) 
      { 
       pdfDoc.Open(); 
       var parsedHtmlElements = HTMLWorker.ParseToList(sr, st); 
       foreach (var htmlElement in parsedHtmlElements) 
       { 
       pdfDoc.Add(htmlElement as IElement); 
       } 
       pdfDoc.Close(); 
       data = ms.ToArray(); 
      } 
     } 
    } 
} 
+3

'HTMLWorker' zostało przerwane. Powinieneś przełączyć się na używanie XML Worker. 'HTMLWorker' zawodzi w niektórych strumieniach HTML, co daje 0 wpisów w' parsedHtmlElements'. Prowadzi to do błędu "Dokument nie ma stron". To sytuacja "nie naprawiam". Musisz uaktualnić do XML Worker. –

Odpowiedz

0

masz już próbował dodać stronę z:

pdfDoc.NewPage(); 

Myślę, że Twój kod powinien wyglądać następująco:

byte[] data; 
using (var sr = new StringReader(sw.ToString())) 
{ 
    var st = new StyleSheet(); 

    GetStyleSheetForUnicodeCharacters(st); 
    using (var ms = new MemoryStream()) 
    { 
     using (var pdfDoc = new Document()) 
     {        
      using (var w = PdfWriter.GetInstance(pdfDoc, ms)) 
      { 
       pdfDoc.Open(); 
       pdfDoc.NewPage(); // add Page here 
       var parsedHtmlElements = HTMLWorker.ParseToList(sr, st); 
       foreach (var htmlElement in parsedHtmlElements) 
       { 
        pdfDoc.Add(htmlElement as IElement); 
       } 
       pdfDoc.Close(); 
       data = ms.ToArray(); 
      } 
     } 
    } 
} 

można również dodać pustą stronę za pomocą:

pdfDoc.newPage(); 
    w.setPageEmpty(false); 

MfG Chris

+0

Po prostu znajduję pdfDoc.NewPage(); które zastosowałem, ale bez rezultatu. Po dalszych badaniach stwierdziłem, że problem występuje, gdy mam tag IMG w moim html. gdybym powiedział, że działa dobrze –

0

Jest to również spowodowane podczas renderowania szablonu HTML, który ma <br> zamiast <br/>