Itextpdf вырубает контент на новой странице, когда не удается загрузить img - PullRequest
0 голосов
/ 23 октября 2019

Я передаю HTML-документ в itextpdf, который занимает 2 страницы. В начале документа находится логотип компании, затем несколько таблиц и, наконец, логотип компании-клиента первой компании. Оба логотипа находятся внутри таблиц. Не знаю почему. Был уже установлен этот путь.

Когда путь к изображениям найден, все работает просто отлично. Но когда первое изображение не найдено, я не получаю второй страницы. Если второе изображение не найдено, все в порядке.

Самое смешное, что если я добавлю тег с текстом внутри до или после таблицы второго изображения, все будет в порядке, независимо от того, найдены ли оба изображения,

Я исправляю ошибки для компании, поэтому поток отверстий для этой системы, над которой я работаю, уже настроен. Программное обеспечение читает документ HTML в строку в Java. А затем распечатайте его, используя itextpdf.

Это HTML-код, который читается из файла "test2.html", который служит шаблоном.

<!DOCTYPE html>
<html lang="en">
   <head>
      <title>#Title</title>
      <style>
         html, body {
         padding:0;
         margin:0;
         }
         @page {
         size:4in 11in;
         }
         @media print {
         body {
         transform: scale(1.00);
         }
         @page {
         margin:2px;
         }
         }
         body {
         font-family: Verdana, sans-serif;
         font-size: 10px;
         }
         .divTicketWrapper {
         margin: auto;  
         min-width: 60em;
         <!-- width:50%; -->
         }
         .scaled {
         transform: scale(0.7); /* Equal to scaleX(0.7) scaleY(0.7) */
         background-color: pink;
         }
         .divRow {
         margin-top:0.2em;
         overflow: auto;
         }
         h1, h2, h3, h4, h5, h6 {
         margin:0.2em;
         }
         header {
         height:100px;
         display:block;
         }
         .headerLogo {
         float:left;
         }
         .headerInfo {
         overflow:auto;
         text-align:center;
         float:right;
         font-size: 12px;
         font-weight:bold;
         }
         article {
         }
         section {
         padding: 0.1em 0 0.1em 0;
         border:none;
         }
         .section{
         background-color:#FFCC99;
         color:#000000;
         text-align:center;
         }
         .sectionHeader {
         background-color:#FFCC99;
         color:#000000;
         text-align:center;
         }
         .divLeftColumn {   
         float:left;
         padding-right:0.2em;
         }
         .divRightColumn {
         overflow: auto;    
         float:right;
         }
         .divLabel {    
         overflow:hidden;
         float:left;
         white-space: nowrap;
         font-weight:bold;
         padding-right:0.2em;
         font-size: 10px;   
         width:20%;
         }
         .divField {
         background-color: #DDDDDD;
         white-space: nowrap;
         overflow:hidden;   
         font-size: 10px;   
         }
         .divFieldWrap {
         white-space: normal;
         max-height:4em;
         }
         .divLabelBackGround {
         background-color:#FFCC99;
         color:#000000;
         text-align:center;
         font-size:10px;
         font-weight:bold;
         height:20px;
         }


      </style>
   </head>
   <body>
      <div class="divTicketWrapper">
         <header>
            <div class="headerLogo"><img src="T:/orgs/images/logo.png" alt="logo" width="130" height="100" style="width:130px; height:100px;" ></img></div>
            <div class="headerInfo">
               <div style="font-size:18px; font-weight:bold;"> TRANSPORT, LLC</div>
               <div>SOUTH US</div>
               <div>US, 123344</div>
               <div>EMERGENCY CONTACT: 12345667</div>
            </div>
         </header>
         <div style="height:10px"></div>
         <!-- LOAD INFORMATION -->
         <section>
          <div  style="text-align:center;color:red"><h3></h3></div>
            <div class="sectionHeader" width="100%">
               <h3 style="font-size:10px;"> INFORMATION</h3>
            </div>
            <table width="100%">
               <tr width="100%">
                  <td class="divLabel">Product Type:</td>
                  <td class="divField"  colspan="3"> product 1</td>
               </tr>
               <tr width="100%">
                  <td class="divLeftColumn divLabel">BOL #:</td>
                  <td class="divLeftColumn divField">1234556</td>
                  <td class="divRightColumn divLabel">Trucked By:</td>
                  <td class="divRightColumn divField"> TRANSPORT, LLC</td>
               </tr>
               <tr width="100%">
                  <td class="divLeftColumn divLabel">Ticket #:</td>
                  <td class="divLeftColumn divField">123243355</td>
                  <td class="divRightColumn divLabel">Accepted Date/Time:</td>
                  <td class="divRightColumn divField">04/28/2000 22:07</td>
               </tr>
               <tr width="100%">
                  <td class="divLeftColumn divLabel">Split Ticket # w/ #:</td>
                  <td class="divLeftColumn divField"></td>
                  <td class="divRightColumn divLabel">Confirmation #:</td>
                  <td class="divRightColumn divField">1233223423</td>
               </tr>
               <!-- DROP OFF TICKET NUMBER -->

               <tr width="100%">
                  <td class="divLeftColumn divLabel"> Receipt #:</td>
                  <td class="divLeftColumn divField"></td>
                  <td class="divRightColumn divLabel">DO Receipt  #:</td>
                  <td class="divRightColumn divField"></td>
               </tr>
            </table>
         </section>

         <section>
            <div class="sectionHeader" width="100%">
               <h3 style="font-size:10px;">INFORMATION</h3>
            </div>
            <table width="100%">
               <tr width="100%">
                  <td class="divLabel">INFORMATION:</td>
                  <td class="divField" colspan="3">TRANSPORT LLC</td>
               </tr>
               <tr width="100%">
                  <td class="divLabel"> Name:</td>
                  <td class="divField" colspan="3">TRANSPORT A 2,3,4</td>
               </tr>

               <tr width="100%">
                  <td class="divLabel">Operator:</td>
                  <td class="divField" colspan="3">TRANSPORT</td>
               </tr>
               <tr width="100%">
                  <td class="divLeftColumn divLabel">PickUp #:</td>
                  <td class="divLeftColumn divField">TRANSPORT</td>
                  <td class="divRightColumn divLabel">Arrival Date &amp; Time::</td>
                  <td class="divRightColumn divField">04/28/2000 22:39</td>
               </tr>
               <tr width="100%">
                  <td class="divLeftColumn divLabel">PickUp #:</td>
                  <td class="divLeftColumn divField"></td>
                  <td class="divRightColumn divLabel">Load Time:</td>
                  <td class="divRightColumn divField">00:08</td>
               </tr>
               <tr width="100%">
                  <td class="divLeftColumn divLabel">Legal Description:</td>
                  <td class="divLeftColumn divField"></td>
                  <td class="divRightColumn divLabel">Wait Time:</td>
                  <td class="divRightColumn divField">00:00</td>
               </tr>
               <tr width="100%">
                  <td class="divLeftColumn divLabel">Latitude:</td>
                  <td class="divLeftColumn divField">1212324343</td>
                  <td class="divRightColumn divLabel">Pickup Date &amp; Time:</td>
                  <td class="divRightColumn divField">04/28/2000 22:47</td>
               </tr>
               <tr width="100%">
                  <td class="divLeftColumn divLabel">Longitude:</td>
                  <td class="divLeftColumn divField">123322344</td>
                  <td class="divRightColumn divLabel">Loaded Miles:</td>
                  <td class="divRightColumn divField">100</td>
               </tr>
               <tr width="100%">
                  <td class="divLabel">County, State::</td>
                  <td class="divField" colspan="3">TRANSPORT</td>
               </tr>
               <tr width="100%">
                  <td class="divLabel">Wait Time Notes:</td>
                  <td class="divField" colspan="3"></td>
               </tr>
               <tr width="100%">
                  <td class="divLabel">Reject Notes:</td>
                  <td class="divField" colspan="3"></td>
               </tr>
               <tr width="100%">
                  <td class="divLabel">Other Notes:</td>
                  <td class="divField" colspan="3">Tank In Production;</td>
               </tr>
            </table>
         </section>
 <section> <div class="sectionHeader"  width="100%"><h3 style="font-size:10px;">PICK UP</h3></div><table width="100%"> <tr><td class="divLeftColumn divLabel">TRANSPORT</td> <td class="divLeftColumn divField divFieldWrap">ACCEPT</td> <td class="divRightColumn divLabel">TRANSPORT</td> <td class="divRightColumn divField divFieldWrap"></td> </tr><tr><td class="divLeftColumn divLabel">TRANSPORT Type</td> <td class="divLeftColumn divField divFieldWrap">TRANSPORT</td> <td class="divRightColumn divLabel">BS&amp;W(%)</td> <td class="divRightColumn divField divFieldWrap">0.1</td> </tr><tr><td class="divLeftColumn divLabel">TRANSPORT</td> <td class="divLeftColumn divField divFieldWrap">TRANSPORT</td> <td class="divRightColumn divLabel">TRANSPORT</td> <td class="divRightColumn divField divFieldWrap">90.0</td> </tr><tr><td class="divLeftColumn divLabel">TRANSPORT</td> <td class="divLeftColumn divField divFieldWrap">0.0</td> <td class="divRightColumn divLabel">TRANSPORT</td> <td class="divRightColumn divField divFieldWrap">90.0</td> </tr><tr><td class="divLeftColumn divLabel">TRANSPORT</td> <td class="divLeftColumn divField divFieldWrap">0.01</td> <td class="divRightColumn divLabel">TRANSPORT</td> <td class="divRightColumn divField divFieldWrap">90.0</td> </tr><tr><td class="divLeftColumn divLabel">TRANSPORT</td> <td class="divLeftColumn divField divFieldWrap">0 ft 0 in 0 in <br></br>(0.0 in)</td> <td class="divRightColumn divLabel">TRANSPORT</td> <td class="divRightColumn divField divFieldWrap">53.0</td> </tr><tr><td class="divLeftColumn divLabel">TRANSPORT</td> <td class="divLeftColumn divField divFieldWrap">0 ft 0 in 0 in <br></br>(0.0 in)</td> <td class="divRightColumn divLabel">TRANSPORT</td> <td class="divRightColumn divField divFieldWrap">49.9</td> </tr><tr><td class="divLeftColumn divLabel">TRANSPORT</td> <td class="divLeftColumn divField divFieldWrap">194.0</td> <td class="divRightColumn divLabel">TRANSPORT</td> <td class="divRightColumn divField divFieldWrap">TRANSPORT</td> </tr><tr><td class="divLeftColumn divLabel">TRANSPORT</td> <td class="divLeftColumn divField divFieldWrap">190.53</td> <td class="divRightColumn divLabel">TRANSPORT</td> <td class="divRightColumn divField divFieldWrap">04/28/2000 22:39</td> </tr><tr><td class="divLeftColumn divLabel">TRANSPORT</td> <td class="divLeftColumn divField divFieldWrap">190.72</td> <td class="divRightColumn divLabel">TRANSPORT</td> <td class="divRightColumn divField divFieldWrap">121313</td> </tr><tr><td class="divLeftColumn divLabel">TRANSPORT</td> <td class="divLeftColumn divField divFieldWrap">0 ft 0 in 0 in <br></br>(0.0 in)</td> <td class="divRightColumn divLabel">TRANSPORT</td> <td class="divRightColumn divField divFieldWrap">04/28/2000 22:47</td> </tr> </table> </section>
         <!-- / PICKUP INFORMATION -->
         <section> <div class="sectionHeader"  width="100%"><h3 style="font-size:10px;">PICK UP</h3></div><table width="100%"> <tr><td class="divLeftColumn divLabel">TRANSPORT</td> <td class="divLeftColumn divField divFieldWrap">ACCEPT</td> <td class="divRightColumn divLabel">Reject Reason</td> <td class="divRightColumn divField divFieldWrap"></td> </tr><tr><td class="divLeftColumn divLabel">TRANSPORT</td> <td class="divLeftColumn divField divFieldWrap">TRANSPORT</td> <td class="divRightColumn divLabel">BS&amp;W(%)</td> <td class="divRightColumn divField divFieldWrap">0.1</td> </tr><tr><td class="divLeftColumn divLabel">TRANSPORT</td> <td class="divLeftColumn divField divFieldWrap">TRANSPORT</td> <td class="divRightColumn divLabel">TRANSPORT</td> <td class="divRightColumn divField divFieldWrap">90.0</td> </tr><tr><td class="divLeftColumn divLabel">TRANSPORT</td> <td class="divLeftColumn divField divFieldWrap">0.0</td> <td class="divRightColumn divLabel">TRANSPORT</td> <td class="divRightColumn divField divFieldWrap">90.0</td> </tr><tr><td class="divLeftColumn divLabel">TRANSPORT</td> <td class="divLeftColumn divField divFieldWrap">0.01</td> <td class="divRightColumn divLabel">TRANSPORT</td> <td class="divRightColumn divField divFieldWrap">90.0</td> </tr><tr><td class="divLeftColumn divLabel">TRANSPORT</td> <td class="divLeftColumn divField divFieldWrap">0 ft 0 in 0 in <br></br>(0.0 in)</td> <td class="divRightColumn divLabel">TRANSPORT</td> <td class="divRightColumn divField divFieldWrap">53.0</td> </tr><tr><td class="divLeftColumn divLabel">TRANSPORT</td> <td class="divLeftColumn divField divFieldWrap">0 ft 0 in 0 in <br></br>(0.0 in)</td> <td class="divRightColumn divLabel">TRANSPORT</td> <td class="divRightColumn divField divFieldWrap">49.9</td> </tr><tr><td class="divLeftColumn divLabel">TRANSPORT</td> <td class="divLeftColumn divField divFieldWrap">194.0</td> <td class="divRightColumn divLabel">TRANSPORT</td> <td class="divRightColumn divField divFieldWrap">TRANSPORT</td> </tr><tr><td class="divLeftColumn divLabel">TRANSPORT</td> <td class="divLeftColumn divField divFieldWrap">190.53</td> <td class="divRightColumn divLabel">TRANSPORT</td> <td class="divRightColumn divField divFieldWrap">04/28/2000 22:39</td> </tr><tr><td class="divLeftColumn divLabel">TRANSPORT</td> <td class="divLeftColumn divField divFieldWrap">190.72</td> <td class="divRightColumn divLabel">TRANSPORT</td> <td class="divRightColumn divField divFieldWrap">108712121215</td> </tr><tr><td class="divLeftColumn divLabel">TRANSPORT</td> <td class="divLeftColumn divField divFieldWrap">0 ft 0 in 0 in <br></br>(0.0 in)</td> <td class="divRightColumn divLabel">TRANSPORT</td> <td class="divRightColumn divField divFieldWrap">04/28/2000 22:47</td> </tr> </table> </section>
         <!-- DROPOFF INFORMATION -->
         <section class="">
            <div class="sectionHeader" width="100%">
               <h3 style="font-size:10px;">TRANSPORT</h3>
            </div>
            <table width="100%">
               <tr width="100%">
                  <td class="divLabel">TRANSPORT:</td>
                  <td class="divField" colspan="3"></td>
               </tr>
               <tr width="100%">
                  <td class="divLabel">TRANSPORT:</td>
                  <td class="divField" colspan="3"></td>
               </tr>

               <tr width="100%">
                  <td class="divLeftColumn divLabel">TRANSPORT:</td>
                  <td class="divLeftColumn divField"></td>
                  <td class="divRightColumn divLabel">Arrival Date &amp; Time:</td>
                  <td class="divRightColumn divField"></td>
               </tr>
               <tr width="100%">
                  <td class="divLeftColumn divLabel">TRANSPORT #:</td>
                  <td class="divLeftColumn divField"></td>
                  <td class="divRightColumn divLabel">TRANSPORT:</td>
                  <td class="divRightColumn divField"></td>
               </tr>
               <tr width="100%">
                  <td class="divLeftColumn divLabel">Latitude:</td>
                  <td class="divLeftColumn divField"></td>
                  <td class="divRightColumn divLabel">Wait Time:</td>
                  <td class="divRightColumn divField"></td>
               </tr>
               <tr width="100%">
                  <td class="divLeftColumn divLabel">Longitude:</td>
                  <td class="divLeftColumn divField"></td>
                  <td class="divRightColumn divLabel">DropOff Date &amp; Time:</td>
                  <td class="divRightColumn divField"></td>
               </tr>
               <tr width="100%">
                  <td class="divLabel">TRANSPORT</td>
                  <td class="divField" colspan="3">TRANSPORT</td>
               </tr>
               <tr width="100%">
                  <td class="divLabel">Wait Time Notes:</td>
                  <td class="divField" colspan="3"></td>
               </tr>
               <tr width="100%">
                  <td class="divLabel">Other Notes:</td>
                  <td class="divField" colspan="3"></td>
               </tr>
            </table>
         </section>                  <section class="">

         </section>
         <!-- / DROPOFF INFORMATION -->
         <section class="">

         </section>
         <!-- DRIVER PICKUP &amp; DROPOFF -->
         <section class="">

            <div class="">
               <table width="100%" style="border-collapse: collapse;">
                  <tr width="100%">
                     <td class="divLeftColumn divLabel divLabelBackGround">TRANSPORT</td>
                     <td class="divRightColumn divLabel divLabelBackGround">TRANSPORT</td>
                  </tr>
               </table>
               <table width="100%">
                  <tr width="100%">
                     <td class="divLeftColumn divLabel">TRANSPORT #:</td>
                     <td class="divLeftColumn divField">100</td>
                     <td class="divRightColumn divLabel">TRANSPORT #:</td>
                     <td class="divRightColumn divField"></td>
                  </tr>
                  <tr width="100%">
                     <td class="divLeftColumn divLabel">TRANSPORT #:</td>
                     <td class="divLeftColumn divField">1015</td>
                     <td class="divRightColumn divLabel">TRANSPORT #:</td>
                     <td class="divRightColumn divField"></td>
                  </tr>
                  <tr width="100%">
                     <td class="divLeftColumn divLabel">TRANSPORT:</td>
                     <td class="divLeftColumn divField">TRANSPORT</td>
                     <td class="divRightColumn divLabel">TRANSPORT:</td>
                     <td class="divRightColumn divField"></td>
                  </tr>
                  <tr width="100%">
                     <td class="divLeftColumn divLabel">TRANSPORT:</td>
                     <td class="divLeftColumn divField">102</td>
                     <td class="divRightColumn divLabel">TRANSPORT:</td>
                     <td class="divRightColumn divField"></td>
                  </tr>
               </table>
            </div>

            </section>
            <p>hola</p>
         <table width="100%" style="border-collapse: collapse;">
            <tr width="100%">
               <td  style="text-align:center;"><img src="T:/orgs/images/logo.png" alt="logo" width="74" height="20" style="width:74px; height:20px;" /></td>
            </tr>
         </table>

         <span style= "page-break-after: always;"></span>
      </div>
   </body>
</html>

Это "main". Java "Я создал, чтобы вы могли запустить код. Это читает "test2.html" из "C: \ temp \" и генерирует PDF размером 4x11 дюймов.

String tempFolder ="C:\temp\";
        String fileName="test2.html";
        String pdfFileName = Utils.generateRandomString();
        pdfFileName += ".pdf";
        final int xInch = 4;
        final int yInch = 11;
        int urx = 72* xInch; // upper right x
        int ury = 72* yInch; // upper right y
        Rectangle rectangle=new Rectangle(urx, ury);

        Document document = new Document(rectangle);
        document.setMargins(10,10,10,10);
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(tempFolder + "/" + pdfFileName));

        document.open();
        XMLWorkerHelper.getInstance().parseXHtml(writer, document, new FileInputStream(tempFolder + "/" + fileName));
        document.close();

Ребята, этот код ужасен, но не мой. Это ужасное программное обеспечение, которое купила моя компания, и теперь мне нужно исправить все дерьмо, внося как можно меньше изменений. Конечно, вся информация в html была изменена на фиктивную информацию, потому что я не могу опубликовать реальную информацию здесь, но этот код представляет проблему очень точно

Я никогда раньше не создавал PDF-файлы из кода. itextpdf - 5.5.13

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...