2013-04-17 2 views
0

Я пытаюсь установить вывод HTML из XMLWorkerHelper в PdfPCell вместо Document. Что я делаю не так?XMLWorkerHelper output to PDFCell

string html = "<h1>Test h1 Heading</h1><ul><li>html 1</li><li>html 2</li><li>html 3</li></ul>"; 

XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, new StringReader(html)); 

PdfPCell P4Type1 = new PdfPCell(); 
P4Tabel.AddCell(P4Type1); 
+0

Смотреть это ссылку на получение списка «IElement». После того, как у вас есть, вы сможете пройти список и добавить объекты в ячейку. http://stackoverflow.com/a/15362705/231316 –

+0

Большое спасибо за ваш быстрый ответ. Я приготовлю это. –

ответ

1

Вместо того чтобы работать с индивидуальным Chunk работы с родителем IElement который является, где большая часть форматирования применяется. Не все IElements могут быть добавлены, так что вы должны будете проверить IsContent() булево свойство:

PdfPCell P4Type1 = new PdfPCell(); 
foreach (var element in mh.elements) { 
    if (element.IsContent()) { 
     P4Type1.AddElement(element); 
    } 
} 
+0

Спасибо большое, что сделал это, еще раз спасибо за ваше время. Ill опубликует полную рабочую версию с некоторыми заметками в ближайшее время, os это может помочь другим. –

+0

ОК. Я слежу за этим сообщением здесь. [link] http://stackoverflow.com/questions/16101481/use-external-css-to-parse-xml. [/ link] это рабочий пример того, как разбирать html из строки в PDFCEll. теперь, как использовать внешний файл CSS, уклоняется от меня. –

1

Этот код проверяется в порядке, что дает HTML строку в PdfPCell писать в PDF-документ

string htmlFolioNotice = " <P align=center ><B> Thank you for your stay with us.Please visit us again.</B></P> " + "<P align=justify>NOTICE TO GUESTS: This property is privately owned and the management reserves the right to refuse service to anyone. Management will not be responsible for accidents or injury to guests or for loss of money, jewelry or valuables of any kind. Management will not be responsible for any item left in the room.<BR>&nbsp;<BR>CHECKOUT TIME: 11:00 AM SELF REGISTRATION ONLY I AGREE that my liability for this bill is not waived and agree to be held personally liable in the event that the indicated person or company failed to pay for any part or full amount of these charges including any missing/damaged items, etc.. I agreee that if an attorney is retained to collect these charges, I will pay all reasonable attorney's fees and costs incurred. If payment is by credit card you are authorized to charge my account for all charges incurred, including any and all damages/missing items, etc.. I agree that the sole purpose of renting this room is for my own residency only. Damge to property,Disturbance to guest or employees or Law Enforcement comes to your room. Immediate check out with no refund</P>";`enter code here` 
PdfPTable tblNotise = new PdfPTable(1) { WidthPercentage = 100, HorizontalAlignment = 1, SpacingBefore = 20f }; 
    int[] tblNotisewidth = { 100 }; 
    tblNotise.SetWidths(tblNotisewidth); 

    PdfPCell contentCell = new PdfPCell(); 
    contentCell.Border = 0; 
    var htmlarraylist = HTMLWorker.ParseToList(new StringReader(htmlFolioNotice), null); 
    for (int k = 0; k < htmlarraylist.Count; k++) 
    { 
     var ele = (IElement)htmlarraylist[k]; 
     contentCell.AddElement(ele); 
    } 
    tblNotise.AddCell(contentCell); 
    docPDF.Add(tblNotise);