首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >改进html以提高itextsharp性能

改进html以提高itextsharp性能
EN

Stack Overflow用户
提问于 2015-06-27 03:43:41
回答 1查看 112关注 0票数 0

我正在用itextsharp将HTML转换为PDF,我已经改进了itextsharp的代码,遵循这个线程iTextSharp XMLWorker parsing really slow,但现在我也需要在html中进行改进。我的目标是达到一个低于0,1秒的时间,我现在是0,4秒

我不知道在html端的规则是什么,以便在它的itextsharp中呈现出最好的效果。在我的HTML模板中,基本上我有样式内联html,所有的工作都是通过表格完成的,这里我给你代码

代码语言:javascript
复制
<html>
  <head>
    <title>DOCUMENT</title>
  </head>
  <body>

    <!-- 2 -->
    <table width="100%" cellspacing="0px" cellpadding="0px">
      <tr>
        <!-- DETALLE DE LECTURA/CONSUMO OK-->
        <td width="60%" style="padding-right:5px" valign="top">
          <table width="100%" style="font-size:8pt;" cellspacing="0px" cellpadding="0px">
            <tr>
              <td width="100%" style="border:1px solid #2F3640;background-color:#2F3640;color:#FFFFFF;font-weight:bold;padding: 2px 5px;font-size:10pt;">DETALLE DE LECTURA/CONSUMO</td>
            </tr>
            <tr>
                  <td>
                    <table width="100%" style="font-size:8pt;text-align:center" cellspacing="0px" cellpadding="0px" border="0">
                      <tr>
                        <td>Consumo &Uacute;ltimos 13 Meses (KWHs)</td>
                      </tr>
                      <tr>
                        <td width="100%">
                          <!-- GRAFICO DE CONSUMO -->
                          <table width="100%" cellspacing="0" cellpadding="0" border="0">
                            <!--BARRAS-->
                            <tr>
                              <td width="100%">
                                <table width="100%" style="" cellspacing="0" cellpadding="0" align="left">
                                    <tr style="font-size:5pt;height:130px;">
                                      <!-- -->
                                      <td style="font-size:5pt;width:4%"></td>
                                      <!-- MES 1 -->
                                      <td valign="bottom" style="font-size:5pt;width:5%">
                                        <p valign="center" style="width:100%; height:8px;">[valor-grafico-1]</p>
                                        <div style="width:100%; height:[valor-grafico-1-px]px; background-color:black">
                                        </div>
                                      </td>
                                      <!-- -->
                                      <td style="font-size:5pt;width:2%"></td>
                                      <!-- MES 2 -->
                                      <td valign="bottom" style="font-size:5pt;width:5%">
                                        <p valign="center" style="width:100%; height:8px;">[valor-grafico-2]</p>
                                        <div style="width:100%; height:[valor-grafico-2-px]px; background-color:gray">
                                        </div>
                                      </td>
                                      <!-- -->
                                      <td style="font-size:5pt;width:2%"></td>
                                      <!-- MES 3 -->
                                      <td valign="bottom" style="font-size:5pt;width:5%">
                                        <p valign="center" style="width:100%; height:8px;">[valor-grafico-3]</p>
                                        <div style="width:100%; height:[valor-grafico-3-px]px; background-color:gray">
                                        </div>
                                      </td>
                                      <!-- -->
                                      <td style="font-size:5pt;width:2%"></td>
                                      <!-- MES 4 -->
                                      <td valign="bottom" style="font-size:5pt;width:5%">
                                        <p valign="center" style="width:100%; height:8px;">[valor-grafico-4]</p>
                                        <div style="width:100%; height:[valor-grafico-4-px]px; background-color:gray">
                                        </div>
                                      </td>
                                      <!-- -->
                                      <td style="font-size:5pt;width:2%"></td>
                                      <!-- MES 5 -->
                                      <td valign="bottom" style="font-size:5pt;width:5%">
                                        <p valign="center" style="width:100%; height:8px;">[valor-grafico-5]</p>
                                        <div style="width:100%; height:[valor-grafico-5-px]px; background-color:gray">
                                        </div>
                                      </td>
                                      <!-- -->
                                      <td style="font-size:5pt;width:2%"></td>
                                      <!-- MES 6 -->
                                      <td valign="bottom" style="font-size:5pt;width:5%">
                                        <p valign="center" style="width:100%; height:8px;">[valor-grafico-6]</p>
                                        <div style="width:100%; height:[valor-grafico-6-px]px; background-color:gray">
                                        </div>
                                      </td>
                                      <!-- -->
                                      <td style="font-size:5pt;width:2%"></td>
                                      <!-- MES 7 -->
                                      <td valign="bottom" style="font-size:5pt;width:5%">
                                        <p valign="center" style="width:100%; height:8px;">[valor-grafico-7]</p>
                                        <div style="width:100%; height:[valor-grafico-7-px]px; background-color:gray">
                                        </div>
                                      </td>
                                      <!-- -->
                                      <td style="font-size:5pt;width:2%"></td>
                                      <!-- MES 8 -->
                                      <td valign="bottom" style="font-size:5pt;width:5%">
                                        <p valign="center" style="width:100%; height:8px;">[valor-grafico-8]</p>
                                        <div style="width:100%; height:[valor-grafico-8-px]px; background-color:gray">
                                        </div>
                                      </td>
                                      <!-- -->
                                      <td style="font-size:5pt;width:2%"></td>
                                      <!-- MES 9 -->
                                      <td valign="bottom" style="font-size:5pt;width:5%">
                                        <p valign="center" style="width:100%; height:8px;">[valor-grafico-9]</p>
                                        <div style="width:100%; height:[valor-grafico-9-px]px; background-color:gray">
                                        </div>
                                      </td>
                                      <!-- -->
                                      <td style="font-size:5pt;width:2%"></td>
                                      <!-- MES 10 -->
                                      <td valign="bottom" style="font-size:5pt;width:5%">
                                        <p valign="center" style="width:100%; height:8px;">[valor-grafico-10]</p>
                                        <div style="width:100%; height:[valor-grafico-10-px]px; background-color:gray">
                                        </div>
                                      </td>
                                      <!-- -->
                                      <td style="font-size:5pt;width:2%"></td>
                                      <!-- MES 11 -->
                                      <td valign="bottom" style="font-size:5pt;width:5%">
                                        <p valign="center" style="width:100%; height:8px;">[valor-grafico-11]</p>
                                        <div style="width:100%; height:[valor-grafico-11-px]px; background-color:gray">
                                        </div>
                                      </td>
                                      <!-- -->
                                      <td style="font-size:5pt;width:2%"></td>
                                      <!-- MES 12 -->
                                      <td valign="bottom" style="font-size:5pt;width:5%">
                                        <p valign="center" style="width:100%; height:8px;">[valor-grafico-12]</p>
                                        <div style="width:100%; height:[valor-grafico-12-px]px; background-color:gray">
                                        </div>
                                      </td>
                                      <!-- -->
                                      <td style="font-size:5pt;width:2%"></td>
                                      <!-- MES 13 -->
                                      <td valign="bottom" style="font-size:5pt;width:5%">
                                        <p valign="center" style="width:100%; height:8px;">[valor-grafico-13]</p>
                                        <div style="width:100%; height:[valor-grafico-13-px]px; background-color:black">
                                        </div>
                                      </td>
                                      <!-- -->
                                      <td style="font-size:5pt;width:4%"></td>

                                    </tr>
                                </table>
                              </td>
                            </tr>
                            <!-- EJE -->
                            <tr style="background-color:black; padding: 0; height: 1px">
                              <td colspan="26" nowrap="" >
                                <div></div>
                              </td>
                            </tr>
                            <!-- MESES -->
                            <tr>
                              <td width="100%">
                                <table width="100%" cellspacing="0" cellpadding="0">
                                  <tr>
                                    <td style="font-size:5pt;" width="4%"></td>
                                    <td style="font-size:5pt;" width="5%">[mes-1]</td>
                                    <td style="font-size:5pt;" width="2%"></td>
                                    <td style="font-size:5pt;" width="5%">[mes-2]</td>
                                    <td style="font-size:5pt;" width="2%"></td>
                                    <td style="font-size:5pt;" width="5%">[mes-3]</td>
                                    <td style="font-size:5pt;" width="2%"></td>
                                    <td style="font-size:5pt;" width="5%">[mes-4]</td>
                                    <td style="font-size:5pt;" width="2%"></td>
                                    <td style="font-size:5pt;" width="5%">[mes-5]</td>
                                    <td style="font-size:5pt;" width="2%"></td>
                                    <td style="font-size:5pt;" width="5%">[mes-6]</td>
                                    <td style="font-size:5pt;" width="2%"></td>
                                    <td style="font-size:5pt;" width="5%">[mes-7]</td>
                                    <td style="font-size:5pt;" width="2%"></td>
                                    <td style="font-size:5pt;" width="5%">[mes-8]</td>
                                    <td style="font-size:5pt;" width="2%"></td>
                                    <td style="font-size:5pt;" width="5%">[mes-9]</td>
                                    <td style="font-size:5pt;" width="2%"></td>
                                    <td style="font-size:5pt;" width="5%">[mes-10]</td>
                                    <td style="font-size:5pt;" width="2%"></td>
                                    <td style="font-size:5pt;" width="5%">[mes-11]</td>
                                    <td style="font-size:5pt;" width="2%"></td>
                                    <td style="font-size:5pt;" width="5%">[mes-12]</td>
                                    <td style="font-size:5pt;" width="2%"></td>
                                    <td style="font-size:5pt;" width="5%">[mes-13]</td>
                                    <td style="font-size:5pt;" width="4%"></td>
                                  </tr>
                                </table>
                              </td>
                            </tr>
                          </table>
                        </td>       
                      </tr>
                    </table>
                  </td>
                </tr>
                <tr>
                  <td width="100%" style="font-size:8pt;">
                    <table width="100%" style="font-size:8pt;" cellspacing="0px" cellpadding="0px">
                      <tr>
                        <td width="50%">Datos consumo desde: [fecha-inicio-consumo]</td>
                        <td width="50%">hasta: [fecha-hasta-consumo]</td>
                      </tr>
                      <tr>
                        <td colspan="2" >
                          <table width="100%" style="font-size:10pt;text-align:center;" cellspacing="0px" cellpadding="0px">
                            <tr>
                              <th>Medidores</th>
                              <th>Lectura Actual</th>
                              <th>Lectura Anterior</th>
                              <th>Diferencia</th>
                              <th>Constante</th>
                              <th>KWH</th>
                            </tr>
                            <tr>
                              <td>[medidor-1]</td>
                              <td>[lectura-actual-1]</td>
                              <td>[lectura-anterior-1]</td>
                              <td>[diferencia-1]</td>
                              <td>[constante-1]</td>
                              <td>[kwh-1]</td>
                            </tr>
                            <tr>
                              <td>[XX]</td>
                              <td>[XX]</td>
                              <td>[XX]</td>
                              <td>[XX]</td>
                              <td>[XX]</td>
                              <td>[XX]</td>
                            </tr>
                            <tr>
                              <td>[XX]</td>
                              <td>[XX]</td>
                              <td>[XX]</td>
                              <td>[XX]</td>
                              <td>[XX]</td>
                              <td>[XX]</td>
                            </tr>
                          </table>
                        </td>
                      </tr>
                      <tr>
                        <td style="padding-top:5px" colspan="2">
                          <table width="100%" style="font-size:8pt;text-align:right" cellspacing="0px" cellpadding="0px">
                            <tr>
                              <td width="80%" style="font-size:10pt;">Consumo Energia(KWH/mensual)</td>
                              <td width="20%" style="font-size:10pt;">[consumo-energia]</td>
                            </tr>
                            <tr>
                              <td width="80%" style="font-size:10pt;">Consumo Energia Invierno(KWH/mensual)</td>
                              <td width="20%" ="font-size:10pt;">[consumo-energia-invierno]</td>
                            </tr>
                            <tr>
                              <td width="80%">Potencia Contratada o Le&iacute;da (KW)</td>
                              <td>[potencia-contratada]</td>
                            </tr>
                            <tr>
                              <td width="80%">Potencia Contratada o Le&iacute;da Horas de Punta(KW)</td>
                              <td>[potencia-hora-punta]</td>
                            </tr>
                          </table>              
                        </td>
                      </tr>
                    </table>
                  </td>
                </tr>
              </table>
        </td>
        <td width="40%">
          <table width="100%" style="font-size:8pt;" cellspacing="0px" cellpadding="0px">
            <tr>
              <td align="center">
                <img width="180px" src="http://localhost/FE.images/SEC.jpg" alt="sec"/>
              </td>
            </tr>
            <tr>
              <td>
                <!-- ACUSE DE RECIBO -->
                <table width="100%" style="font-size:8pt;">
                  <tr>
                    <td width="40%">Recinto:</td>
                    <td width="60%" style="border-bottom:1px solid black;"></td>
                  </tr>
                  <tr>
                    <td>Nombre:</td>
                    <td width="60%" style="border-bottom:1px solid black;"></td>
                  </tr>
                  <tr>
                    <td>Fecha:</td>
                    <td width="60%" style="border-bottom:1px solid black;"></td>
                  </tr>
                  <tr>
                    <td>RUT:</td>
                    <td width="60%" style="border-bottom:1px solid black;"></td>
                  </tr>
                  <tr>
                    <td colspan="2" style="border-bottom:1px solid black;">
                        <br/>
                    </td>
                  </tr>
                  <tr>
                    <td colspan="2" style="text-align:center">FIRMA</td>
                  </tr>
                </table>
              </td>
            </tr>
          </table>
        </td>
      </tr>
    </table>

    <!-- 3 -->
    <table width="100%" style="font-size:8pt;" cellspacing="0px" cellpadding="0px">
      <tr>
        <td width="65%">
          <table width="100%" style="padding-right:5px; font-size:8pt;" cellspacing="0px" cellpadding="0px">
            <tr>
              <td style="border:1px solid #2F3640;background-color:#2F3640;color:#FFFFFF;font-weight:bold;padding: 2px 5px;font-size:10pt;">
                DETALLE DE LA CUENTA FACTURACION
              </td>
            </tr>
            <tr>
              <td>
                <table width="100%"  style="font-size:8pt;line-height:9pt;" cellspacing="0px" cellpadding="0px">
                  <tr>
                    <td width="70%" style="font-size:10pt;" >Cargo fijo mensual</td>
                    <td width="30%" style="text-align:right;font-size:10pt;">$[cargo-fijo-mensual]</td>
                  </tr>
                  <tr>
                    <td style="font-size:10pt;">Cargo &uacute;nico del sistema troncal ([cantidad-energia] kWh)</td>
                    <td style="text-align:right;font-size:10pt;">$[cargo-unico]</td>
                  </tr>
                  <tr>
                    <td style="font-size:10pt;">Cargo por energ&iacute;a base ([cantidad-energia] kWh)</td>
                    <td style="text-align:right;font-size:10pt;">$[cargo-energia-base]</td>
                  </tr>
                  <tr>
                    <td style="font-size:10pt;">Cargo por energ&iacute;a adicional de invierno ([cantidad-energia] kWh)</td>
                    <td style="text-align:right;font-size:10pt;">$[cargo-energia-invierno]</td>
                  </tr>
                  <tr>
                    <td style="border-top:1px solid black;font-size:10pt;" width="70%">Reliquidaciones</td>
                    <td style="border-top:1px solid black;text-align:right;font-size:10pt;" width="30%">$[reliquidaciones]</td>
                  </tr>
                  <tr>
                    <td style="font-size:10pt;">Calibracion de medidor</td>
                    <td style="text-align:right;font-size:10pt;">$[calibracion-medidor]</td>
                  </tr>
                  <tr>
                    <td style="font-size:10pt;">Inter&eacute;s por mora</td>
                    <td style="text-align:right;font-size:10pt;">$[interes-mora]</td>
                  </tr>
                  <tr>
                    <td style="font-size:10pt;">Compensaciones</td>
                    <td style="text-align:right;font-size:10pt;">$[compensaciones]</td>
                  </tr>
                  <tr>
                    <td style="font-size:10pt;">item</td>
                    <td style="text-align:right;font-size:10pt;">$[item-1]</td>
                  </tr>
                  <tr>
                    <td style="font-size:10pt;">item</td>
                    <td style="text-align:right;font-size:10pt;">$[item-2]</td>
                  </tr>
                  <tr>
                    <td style="font-size:10pt;">item</td>
                    <td style="text-align:right;font-size:10pt;">$[item-3]</td>
                  </tr>
                  <tr>
                    <td style="font-size:10pt;">item</td>
                    <td style="text-align:right;font-size:10pt;">$[item-4]</td>
                  </tr>
                  <tr>
                    <td style="font-size:10pt;">item</td>
                    <td style="text-align:right;font-size:10pt;">$[item-5]</td>
                  </tr>
                  <tr>
                    <td style="font-size:10pt;">item</td>
                    <td style="text-align:right;font-size:10pt;">$[item-6]</td>
                  </tr>
                  <tr>
                    <td style="font-size:10pt;">item</td>
                    <td style="text-align:right;font-size:10pt;">$[item-7]</td>
                  </tr>
                  <tr>
                    <td style="font-size:10pt;">item</td>
                    <td style="text-align:right;font-size:10pt;">$[item-8]</td>
                  </tr>
                  <tr>
                    <td style="font-size:10pt;">item</td>
                    <td style="text-align:right;font-size:10pt;">$[item-9]</td>
                  </tr>
                  <tr>
                    <td style="font-size:10pt;">item</td>
                    <td style="text-align:right;font-size:10pt;">$[item-10]</td>
                  </tr>
                  <tr>
                    <td width="70%" style="border-top:1px solid black;padding-top:5px;font-size:10pt;">Total:</td>
                    <td width="30%" style="border-top:1px solid black;padding-top:5px;text-align:right;font-size:10pt;">$[total-pagar]</td>
                  </tr>
                </table>
              </td>
            </tr>
          </table>
        </td>
        <!-- TOTALES -->
        <td width="35%">
          <table width="100%" style="font-size:8pt;" cellspacing="0px" cellpadding="0px">
            <tr>
              <td width="100%" align="left">
                <table width="95%" style="font-size:8pt;border:2px solid black;" cellspacing="0px" cellpadding="0px">
                  <tr>
                    <th style="border-bottom:1px solid black;">DETALLE DE ABONOS</th>
                  </tr>
                  <tr>
                    <td>Total Abonados:</td>
                    <td></td>
                  </tr>
                  <tr>
                    <td>Fecha Abono:</td>
                    <td></td>
                  </tr>
                  <tr>
                    <td>Comprobante Caja &#8470;:</td>
                    <td></td>
                  </tr>
                </table>
              </td>
            </tr>
            <tr>
              <td width="100%">
                <table width="100%" style="font-size:8pt;" cellspacing="0px" cellpadding="0px">
                  <tr>


                    <td width="50%" style="font-size:10pt;">Fecha vencimiento:</td>
                    <td width="50%" style="font-size:10pt;">[fecha-vencimiento]</td>
                  </tr>
                  <tr>
                    <td width="50%" style="font-size:10pt;">Fecha de corte de suministro:</td>
                    <td width="50%" style="font-size:10pt;">[fecha-corte]</td>
                  </tr>
                  <tr>
                    <td width="50%" style="font-size:10pt;">&Uacute;ltimo pago realizado:</td>
                    <td width="50%" style="font-size:10pt;">[fecha-ultimo-pago]</td>
                  </tr>
                  <tr>
                    <table width="100%" style="background-color:black;color:white;font-weight:bold;font-size:10pt;" cellspacing="0px" cellpadding="0px">
                      <tr>
                        <td width="50%" >TOTAL:</td>
                        <td width="50%" style="background-color:black;color:white;font-weight:bold;font-size:10pt;";>[total-pagar]</td>
                      </tr>
                    </table>
                  </tr>
                  <tr>
                    <td align="center">
                      <img width="280px" src="#" alt="timbre"/>
                    </td>
                  </tr>
                </table>
              </td>
            </tr>
          </table>          
        </td>
      </tr>
    </table> 

  </body>
</html>

EN

回答 1

Stack Overflow用户

发布于 2015-06-27 04:58:07

我不知道在最新的版本中是否已经解决了这个问题,但是在5.5.5版本中有一个关于ImageProvider的问题。如果您没有显式设置ImageProvider,iTextSharp将在内部抛出异常,捕获它并代表您创建一个ImageProvider。不幸的是,这可能会发生几十次或数百次,这取决于您正在处理多少HTML。

快速的解决方法是显式地设置您自己的ImageProvider。这可以只是一个简单的所谓的“空白图像提供程序”,如shown here,或者您可以制作一个更复杂的。

这是一个VB.Net版本:

代码语言:javascript
复制
Public Class BlankImageProvider
    Implements IImageProvider

    Public Function GetImageRootPath() As String Implements IImageProvider.GetImageRootPath
        Return ""
    End Function

    Public Sub Reset() Implements IImageProvider.Reset

    End Sub

    Public Function Retrieve(src As String) As iTextSharp.text.Image Implements IImageProvider.Retrieve
        Return Nothing
    End Function

    Public Sub Store(src As String, img As iTextSharp.text.Image) Implements IImageProvider.Store

    End Sub
End Class

要使用它,只需使用SetImageProvider方法将其绑定到HtmlPipelineContext对象:

代码语言:javascript
复制
htmlContext.SetImageProvider(New BlankImageProvider())

另外,我不知道这是否有影响,但从技术上讲,你的HTML在某些地方是不准确的。例如,您在HTML属性中使用了px,但实际上您只能使用数字或带百分号的数字。例如,cellpadding="0px"无效,应该为cellpadding="0"。您还至少有一个<table>标记,它直接是<tr>的子标记,但是应该有一个中间的<td><th>标记。这些事情可能会影响iTextSharp的速度,也可能不会影响,但它可能会让事情变得更加经得起未来的考验。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31080976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档