2016-02-16 2 views
0

Я пытаюсь распечатать текст в текстовом формате в pdf, используя библиотеку itextSharp с версией 5.5.8.0. Но я печатаю этот богатый текст, он будет печатать только обычную строку без каких-либо эффектов стиля или html-тегов.Печать сплошной текстовой строки со всеми эффектами и стилями в pdf с использованием iTextSharp

Вот мой веб мнение, что содержать форматированный текст

enter image description here

Но при печати в формате PDF с использованием iTexhSharp, он будет печатать как форматированный текст, но каждый HTML элемент будет начать печать с новой строки, так как ниже изображения

enter image description here

Вот код, который я использую, чтобы напечатать форматированный текст в формате PDF:

ElementList elements = XMLWorkerHelper.ParseToElementList(descriptionData, ""); 

       PdfPCell cell = new PdfPCell(); 
       foreach(var ele in elements) { 
        cellDescriptionData.AddElement(ele); 
       } 

       tableThirdBlock.AddCell(cellDescriptionData); 

Здесь поле описания должно содержать строку html.

Я хочу напечатать то же самое в pdf, что и в веб-представлении.

Вот эта строка HTML, которая генерируется динамически. Таким образом, строка html будет динамической с динамическим css и текстом.

" <b style="font-family: Arial, Verdana; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; color: rgb(204, 255, 255); background-color: rgb(51, 102, 255);">zzz&nbsp;</b><div style="font-family: Arial, Verdana; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"><b style="color: rgb(204, 255, 255); background-color: rgb(51, 102, 255);"><br /></b></div><div><b style="font-family: Arial, Verdana; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; color: rgb(204, 255, 255); background-color: rgb(51, 102, 255);">Test &nbsp;</b> &nbsp; <span style="color: rgb(255, 0, 0);">&nbsp;<span style="font-weight: bold;">Description</span> &nbsp;</span><span style="color: rgb(153, 51, 153); font-style: italic;">Other Color</span></div> ". 

Является ли что-то не так, что мне не хватает?

Пожалуйста, помогите мне распечатать насыщенный текст со всеми эффектами и стилями в формате pdf.

Благодаря

+1

Вы используете 'HTMLWorker'. Вместо этого вы должны использовать XML Worker. XML Worker является надстройкой для iTextSharp ([отдельная библиотека DLL] (http://developers.itextpdf.com/question/generate-pdf-html-using-itextsharpdll)). Подробнее об этом читайте на [официальном сайте iText] (http://developers.itextpdf.com/faq/category/parsing-xml-and-xhtml). См. Например [Как преобразовать HTML в PDF?] (Http://developers.itextpdf.com/question/how-convert-html-pdf) –

+0

У меня есть важный вопрос: почему вы не посетили официальную документацию ? Я потратил много времени и денег на создание этого веб-сайта и предоставление всего этого контента, но почему-то никто не хочет его использовать. Могу ли я что-то сделать для улучшения документации? Что-то не хватает? Прямо сейчас, похоже, что я выбросил много денег и потратил много времени, потому что я все еще вижу таких людей, как вы, которые используют «HTMLWorker» вместо того, чтобы следовать советам, данным на официальном веб-сайте. Надеюсь, вы понимаете, что это меня разочаровывает. –

+0

Ваша ссылка выше, но как я могу использовать XML Worker для печати насыщенного текста, в частности, «PdfPCell»? Я прошел через ваш сайт, но не нашел такого примера для печати богатого html-текста в Cell со всеми эффектами и стилями. Стили для такого богатого текста включены только в строку html и ее динамику. Можете ли вы привести такой пример? – Herin

ответ

2

Я ваш комментарий, вы просите пример о том, как использовать XML-Worker для разбора HTML в список Element объектов. Такой пример можно найти на официальном веб-сайте IText в ответах на вопросы, такие как:

В 1, вы обнаружите, что вы можете разобрать HTML-CSS и файл с ElementList объекта:

ElementList elements = XMLWorkerHelper.parseToElementList(HTML, CSS); 

в 2, вы узнаете, как добавлять элементы в ElementList к PdfPCell:

PdfPTable table = new PdfPTable(1); 
PdfPCell cell = new PdfPCell(); 
for (Element e : elements) { 
    cell.addElement(e); 
} 
table.addCell(cell); 
document.add(table); 

Обратите внимание, что я упростил примеры из оригинальных вопросов. Вам не нужен RTL, потому что ваш текст, вероятно, не является арабским. Вероятно, вы можете использовать метод удобства parseToElementList() вместо полного кода, который использовался в 2.

Я создал доказательство концепции, что приводит к файлу test-herin.pdf:

enter image description here

HTML, чтобы получить этот результат выглядит следующим образом:

<div><span class="bluetextwhitebackground">zzz</span></div> 
<div> 
<span class="bluetextwhitebackground">Test</span> 
<span class="redtext">Description</span> 
<span class="italicpurple">Other Color</span> 
</div> 

CSS-получить желаемое стили выглядят следующим образом:

.bluetextwhitebackground 
    { font-family: times; color: white; background: blue} 
.redtext 
    { font-family: times; color: red; } 
.italicpurple 
    { font-family: times; font-style: italic; color: purple } 

Как вы можете видеть, я использовал <div>, когда мне нужен блок текста, который вызывает новую строку после визуализации текста. Я использовал <span> в тех случаях, когда я не хочу появляться новая строка.

Трудно ответить на ваш вопрос, потому что вы не показываете свой HTML. Новые строки запускаются при использовании тегов <p> или <div> или путем определения чего-то как div в CSS.

Кстати, код для генерации PDF можно найти здесь: ParseHtml13

Update:

После разделила HTML, я создал еще одно доказательство концепции:

Полученный файл PDF - test-herin2.pdf, и он выглядит примерно так:

enter image description here

Это выглядит так, как я ожидаю. Другими словами: я не могу воспроизвести проблему, которую вы описываете. Если я не могу воспроизвести проблему, я не могу ее исправить.

+0

в ответе линии, как: «Elementlist элементов = XMLWorkerHelper.parseToElementList (HTML, CSS);» Здесь, в этой строке, есть говорит об ошибке: «iTextSharp.tool.xml.XMLWorkerHelper не содержит определение для" parseToElementList '' Не могли бы вы рассказать, где он доступен? Я использую itextsharp.xmlworker DLL с версией 5.4.5.0 – Herin

+0

Вам нужно перейти на более новую версию! iTextSharp 5.4.5 датируется 2013 годом, и мы уже в 2016 году! –

+0

Привет, не могли бы вы еще раз взглянуть на мой вышеупомянутый вопрос, так как я обновил свой вопрос с помощью Image. Пожалуйста, предоставьте ваше предложение или помощь. Благодарю. – Herin

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