Получение этого org.xhtmlrenderer.render.BlockBox не может быть преобразовано в org.xhtmlrenderer.newtable.TableBox при попытке отобразить PDF

Я получаю эту ошибку, когда пытаюсь отобразить PDF. Я использую PDF-модуль Николя Леру для игрового фреймворка.

Это весь стек: Pastebin. Гугл выдает только 4 результата. Они предлагают удалить любые свойства float и атрибуты position, которые я удалил, просто чтобы попробовать. Я все еще сталкиваюсь с этой проблемой. Кто-нибудь смог решить проблему?

РЕДАКТИРОВАТЬ: это html, который отображает pdf:

#{extends 'main.html' /} #{set title:'Salary Details' /}
<html>
<head>
<title>Employee Name</title>
<style>
body {
    font: 9pt Arial, Helvetica, sans-serif;
}

.container {
    margin: 0 auto;
    width: 1000px;
    border: 1px solid black;
    padding: 12px;
}

.logoClass {
    width: 200px;
    height: 85px;;
}

.companyAddressClass {
    width: 60%;
    margin: 0 auto;
    font-size: 17px;
    font-weight: bold;
    text-align: center;
}

.empClass table {
    width: 100%;
    border: 1px solid #ccc;
    border-collapse: collapse;
    margin: 10px 0px;
}

.empClass table th,td {
    border: 1px solid #ccc;
    padding: 5px 5px;
}

.empClass table th {
    background: #f2f2f2;
}
</style>
</head>

<body onload="window.print();">

    %{for(int i=0;i<dataList.size ();i=i+1){}%
    <div class="container" style="page-break-after:#{if i == dataList.size()-1} avoid;#{/if} #{else} always; #{/else}">
    <div class="logoClass"></div>
    <div class="companyAddressClass">
        ${dataList.get(i).distributorName},<br /> ${dataList.get(i).city},<br />
        ${dataList.get(i).state} <br /> <br /> <span>Payslip for the
            month of ${dataList.get(i).salaryMonth}</span>
    </div>
    <br class="clear" />
    <div class="empClass">
        <table border="1">
            <tr>
                <td>Employee No: ${dataList.get(i).employeeNumber}</td>
                <td>Location: ${dataList.get(i).location}</td>
            </tr>
            <tr>
                <td>Name: ${dataList.get(i).employeeName}</td>
                <td>Salary for the M/O: ${dataList.get(i).salaryMonth}</td>
            </tr>
            <tr>
                <td>Bank Name: ${dataList.get(i).bankName}</td>
                <td>Designation: ${dataList.get(i).designation}</td>
            </tr>
            <tr>
                <td>Bank Acc No: ${dataList.get(i).accountNumber}</td>
                <td>Join Date: ${dataList.get(i).joinDate}</td>
            </tr>
            <tr>
                <td>PF No: ${dataList.get(i).pfNumber}</td>
                <td>Gender: ${dataList.get(i).gender}</td>
            </tr>
            <tr>
                <td>ESI No: ${dataList.get(i).esiNumber}</td>
                <td>LOP: ${dataList.get(i).lop}</td>
            </tr>
            <tr>
                <td>PAN No: ${dataList.get(i).panNumber}</td>
                <td>Days Worked: ${dataList.get(i).daysWorked}</td>
            </tr>
        </table>
    </div>
    <br />
    <div class="empClass">
        <table border="1">
            <tr>
                <th colspan="3">Earnings</th>
                <th colspan="2">Deductions</th>
            </tr>
            <tr>
                <th align="left">Header</th>
                <th align="right">Actual</th>
                <th align="right">Paid</th>
                <th align="left">Header</th>
                <th align="right">Paid</th>
            </tr>
            <tr>
                <td>Basic</td>
                <td align="right">${dataList.get(i).basic}</td>
                <td align="right">${dataList.get(i).basic}</td>
                <td>PF</td>
                <td align="right">${dataList.get(i).pf}</td>
            </tr>
            <tr>
                <td>HRA</td>
                <td align="right">${dataList.get(i).hra}</td>
                <td align="right">${dataList.get(i).hra}</td>
                <td>ESICEE</td>
                <td align="right">${dataList.get(i).esicee}</td>
            </tr>
            <tr>
                <td>Conveyance Allowance</td>
                <td align="right">${dataList.get(i).conveynanceAllowance}</td>
                <td align="right">${dataList.get(i).conveynanceAllowance}</td>
                <td>ESICEE(PWS)</td>
                <td align="right">${dataList.get(i).esiceePWS}</td>
            </tr>
            <tr>
            <td>Medical Allowance</td>
                <td align="right">${dataList.get(i).medicalAllowances}</td>
                <td align="right">${dataList.get(i).medicalAllowances}</td>
                <td>PT</td>
                <td align="right">${dataList.get(i).pt}</td>
            </tr>
            <tr>
                <td>Special Allowance</td>
                <td align="right">${dataList.get(i).specialAllowance}</td>
                <td align="right">${dataList.get(i).specialAllowance}</td>
                <td>PT(PWS)</td>
                <td align="right">${dataList.get(i).ptPWS}</td>
            </tr>
            <tr>
                <td>Incentives</td>
                <td align="right">${dataList.get(i).midMonthAmountPWS}</td>
                <td align="right">${dataList.get(i).midMonthAmountPWS}</td>
                <td>&nbsp;</td>
                <td>&nbsp;</td>
            </tr>
            <tr>
                <td>Other Allowances</td>
                <td align="right">${dataList.get(i).otherAllowance}</td>
                <td align="right">${dataList.get(i).otherAllowance}</td>
                <td>&nbsp;</td>
                <td>&nbsp;</td>
            </tr>
            <tr>
                <td colspan="3" align="right">Total
                    Earnings:${dataList.get(i).totalEarnings}</td>
                <td colspan="2" align="right">Total Deduction
                    :${dataList.get(i).totalDeduction}</td>
            </tr>
            <tr>
                <td colspan="3">&nbsp;</td>
                <td colspan="2" align="right"><strong>Salary Credited
                        : ${dataList.get(i).salaryCredited}</strong></td>
            </tr>
        </table>

        <table>
        <thead>
            <tr>
                <th>Position Title</th>
                <th>City Name</th>
                <th>State Name</th>
            </tr>
        </thead>
        <thead>
            <tr>
                ..
                ..
                ..
                ..
                <th>${dataList.get(i).positionTitle}</th>
                <th>${dataList.get(i).cityName}</th>
                <th>${dataList.get(i).stateName}</th>
            </tr>
        </thead>
    </table>
    <br>
        <table>
        <thead>
            <tr>
                <th>Some Header</th>
                <th>Some Header</th>
                <th>Some Header</th>
                <th>Some Header</th>

            </tr>
        </thead>
        <tbody>
            <tr>
                <td align="center">Values</td>
                ..
                ..
                ..
                ..
                ..
            </tr>
        </tbody>
    </table>
    </div>
    <div>
        <span style="font-size: 15px; font-weight: bold;"> Salary
            Credited Amount(In Words): ${dataList.get(i).salaryCreditedInWord} </span>
    </div>
    </div>
    <br />
    <br />

    %{}}% 
</body>
</html>

Я использую Windows 7 и Tomcat6 в качестве среды тестирования, ту же среду, что и люди, использующие здесь столкнулись с проблемой.

Спасибо.


person theTuxRacer    schedule 30.10.2012    source источник
comment
вам следует связаться с создателем модуля, чтобы помочь решить проблему. И мы не можем помочь, не увидев код создаваемого вами PDF-файла.   -  person Pere Villega    schedule 30.10.2012
comment
@PereVillega Я добавил код. Также свяжется с автором, чтобы узнать, может ли он уделить немного времени.   -  person theTuxRacer    schedule 31.10.2012
comment
Используя ваш код в качестве html-страницы, я мог бы создать PDF-файл с помощью Flying Saucer R8. Какой фактический html вы хотите преобразовать?   -  person Adam    schedule 03.11.2012
comment
Это фактический HTML, который мне нужно преобразовать. Я нуб здесь, так что терпите меня. Модуль, о котором я говорю, был сделан с помощью YaHP. И я так понимаю ФС, на базе ЯХП. Отсюда и тег. Старый шаблон работал нормально, поэтому я немного подвигался по (недавно добавленной) таблице (той, что ближе к концу) в html, и теперь генерация происходит нормально. Я не менял код Java. Я нахожу это очень странным.   -  person theTuxRacer    schedule 03.11.2012


Ответы (2)


Этот коммит исправит вашу проблему. Вы можете загрузите весь класс и поместите его в свой исходный код, чтобы вам не пришлось пересобирать библиотеку jar.

person Pino    schedule 16.06.2017
comment
Спасибо, что нашли время, чтобы ответить на этот старый вопрос. Я больше не связан с игровым фреймворком, тем не менее ваш ответ ценится мной и сообществом. - person theTuxRacer; 06.09.2017

Если вы столкнулись с этой проблемой, чтобы исправить это, просто добавьте тег span внутри td и добавьте стиль к этому тегу span. Пример:

<td>
<span style = style="position: absolute;">
</td>

По сути, если вы добавите стиль в td, вы получите сообщение об ошибке из-за ошибки в pdf с летающими тарелками.

person Venkatesh K    schedule 24.05.2020