Непрерывный текст в области текста обрезает PDF, переполненный текстом при использовании Itext 7.1.7

Я вижу, что есть много вопросов, связанных с одним и тем же сценарием, этот немного отличается, не может найти решение. У меня есть в таблице в ячейке. Когда я даю непрерывный текст вроде "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc ещё это еще не полный текст, когда я загружаю файл печати, когда я загружаю файл печати, и нормальный, когда я даю нормальный текст с помощью breaks.cc, это мой код

.generaltable {
	background-color : #5C7FBF;
	border:thin;
	width : 100%;
	font-family: Arial, Helvetica, sans-serif;
	font-size: 14px;
	}
  
  
	.column {
	background-color : #DEEDFF;
	font-weight : bold;
	padding-bottom : 1px;
	padding-left : 1px;
	padding-right : 1px;
	padding-top : 1px;
	text-align : center;
	font-family: Arial, Helvetica, sans-serif;
	font-size: 14px;
	border: none;
	}
  
 .edit {
	background-color : #DEEDFF;
	border-width: 1px;
	border-style:solid;
	border-color:#DEEDFF;
	border: 1px solid #DEEDFF;
	color: black;
	text-align : left;
	font-weight : bold;
	font-family: Arial, Helvetica, sans-serif;
	font-size: 14px;
	word-break: break-all;
	}
  
  .iedit2 {
	background-color : white;
	text-align: left;
	color: black;
	font-family: Arial, Helvetica, sans-serif;
	font-weight: bold;
	border-top: 1px solid #999999;
	border-right: 1px solid #333333;
	border-bottom: 1px solid #333333;
	border-left: 1px solid #999999;
	word-break: break-all;
	}
  
  
  
  
  
<table border="1" width="100%" align="center" cellpadding="2" cellspacing="1"  class="generaltable">  <tbody><tr id="Row35494#0">
    <th id="04" class="column" width="39%"><a href="javascript:alert('Self Explanatory')">Brief                 description of the issue *</a></th>
        <td id="1 04" width="39%" class="edit">
            <textarea id="269494_0" class="iedit2" cols="35" rows="5" wrap="virtual" maxlength="4000"                   name="fiy">ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
             </textarea>
        </td>
      </tr>
  </tbody>
 </table>

Ответы

Ответ 1

pdfHTML позволяет вам преобразовывать связанные с формой элементы (входные данные, текстовые области) непосредственно в простой PDF-контент или создавать PDF файл с помощью AcroForm (чтобы эти элементы можно было редактировать, как они должны быть в HTML).

Чтобы включить это поведение, вы должны использовать setCreateAcroForm(true) в ConverterProperties, который вы передаете HtmlConverter.

Если вы не хотите, чтобы эти поля редактировались, вы можете сгладить эти поля в качестве второго шага после преобразования HTML в PDF.

Сказав это, поведение, которое вы описываете, похоже на ошибку в iText. Но режим создания AcroForm и выравнивания реализован немного по-другому, и похоже, что текстовая область будет преобразована, как и ожидалось в вашем случае. Вы не приложили весь пример, так что это трудно проверить наверняка, но для небольшого фрагмента, который вы прикрепили, все в порядке. Вот код, который вы можете использовать:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
HtmlConverter.convertToPdf(new FileInputStream("C:\\file.html"), baos,
        new ConverterProperties().setCreateAcroForm(true));

PdfDocument document = new PdfDocument(new PdfReader(new ByteArrayInputStream(baos.toByteArray())), 
        new PdfWriter(new File("C:\\out.pdf")));
PdfAcroForm acroForm = PdfAcroForm.getAcroForm(document, false);
acroForm.flattenFields();
document.close();

Ответ 2

Вы можете определять, когда текст достигает новой строки в поле ввода, и вставлять '\n', чтобы принудительно разрывать строки, чтобы при загрузке изображения оно было жестко запрограммировано на разрыв строки. Надеюсь это поможет!

Ответ 3

Я полагаю, что добавление следующего CSS к вашему элементу контента (т.е. .edit, .iedit2) должно решить проблему.

overflow-wrap: break-word;
word-wrap: break-word;
word-break: break-word;

Дайте мне знать, если это работает :)

Также для немного лучшего кода вы можете добавить следующее;)

-ms-hyphens: auto;
-moz-hyphens: auto;
-webkit-hyphens: auto;
hyphens: auto;

Они добавят "-", чтобы разбить слово :)