@NARAN Если вы не знаете, как принять ответ, все, что вам нужно сделать, это нажать на галочку в левом верхнем углу.

тировал iTextsharp и iText7 для преобразования HTML в PDF. В зависимости от производительности iTextsharp занимает 3 минуты для создания 10000 PDF. Но iText7 заняло 17 минут для создания 10000 PDF. Так как iText7 является новой версией по сравнению с iTextsharp, я решил использовать iText7 для коммерческих целей. Но производительность в iText7 низкая. Итак, скажите, пожалуйста, как повысить производительность преобразования HTML в PDF в iText7?

Тестирование в iText7

  For i As Integer = 0 To 10000 
        HTML = ReadFile '=> Read HTML file from particular location
        'HTML = Replace(HTML) => To Replace the content dynamically
         Dim writer As PdfWriter
          Dim array() As Byte = System.Text.Encoding.ASCII.GetBytes("a")
          writer = New PdfWriter(FileName, New WriterProperties().SetStandardEncryption(array, array, EncryptionConstants.ALLOW_PRINTING,
                            EncryptionConstants.ENCRYPTION_AES_256))
           HtmlConverter.ConvertToPdf(HTML, writer)
    Next

Тестирование в iTextSharp

   Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports iTextSharp.pdfa
Imports System.IO
Imports iTextSharp.text.html.simpleparser
Imports System.Text
Imports iTextSharp.tool.xml.html
Imports iTextSharp.tool.xml
Imports iTextSharp.tool.xml.pipeline.html

 For i As Integer = 0 To 10000
    HTML = ReadFile '=> Read HTML file from particular location
        'HTML = Replace(HTML) => To Replace the content dynamically
    Dim bPDF As Byte()
        Dim ms As New MemoryStream
        Dim doc As Document
        doc = New Document(PageSize.A4, 25, 25, 25, 25)
        Dim txtReader As New StringReader(Html)   
        Dim oPdfWriter As PdfWriter
        oPdfWriter = PdfWriter.GetInstance(doc, ms)
        oPdfWriter.SetEncryption(iTextSharp.text.pdf.PdfWriter.ENCRYPTION_AES_128, "q", "a", 2)
        Dim htmlWorker As New HTMLWorker(doc)       
        doc.Open()
        htmlWorker.StartDocument()      
        htmlWorker.Parse(txtReader)
        htmlWorker.EndDocument()
        htmlWorker.Close()
        doc.Close()
        bPDF = ms.ToArray()
        Dim FIleName As String = "D:\ItextSharp_" & Now.ToString("ddMMyyyyHHMMssffffff") & ".pdf"
        File.WriteAllBytes(FIleName, bPDF)
Next



Function ReadFile()
        Dim stringReader As String = ""
        Dim objReader As New System.IO.StreamReader("D:\AS1-Revamp\TestHTML\test.html")
        Do While objReader.Peek() <> -1
            stringReader = stringReader & objReader.ReadLine() & vbNewLine
        Loop
        ReadFile = stringReader
End Function

Я использовал приведенный выше код для тестирования производительности ... iText7 Tacking Больше времени для размещения файла PDF в указанном пути по сравнению с iTextSharp.

РЕДАКТИРОВАТЬ: скопировать / вставить HTML в этот другой вопрос:

На основании моего вопроса в путиПроблема производительности iText7 по сравнению с iTextSharp Я отправил HTML-файл для MR. Амеди Ван Гасс. Поэтому, пожалуйста, скажите мне, как улучшить производительность iText7 ..

<div id = "headerdiv" style="width:540px; float:left; background:#ededed; padding:30px; overflow:hidden;">
<br>
<br>
<br>
<div>
<img border='0' src='D:\AS1-Revamp\TestHTML\newlog.bmp' width='100' height='40'>
</div>
<p style="color:Red;align=center;" >                         Details</p>
<br>
<br>
<table >
<tr  border='0'>
<td  bgcolor='Green'>
<font size="3" color="white">
SDetails
</font>
</td>
</td>
</tr>
<tr border='0'>
<td>
<div id="dvKYC">
<table  border='1'>

<tr>
<td><#lsName#></td>
<td>No:<#lsno#></td>
</tr> 

<tr  border='1'>
<td width=500><#lsAddess#></td>
<td></td>
</tr>

<tr>
<td><#lsContacts#></td>
<td> </td>
</tr> 
</table>
</div>
</td>
</tr>
</table>

<br>

<div >
<table >
<tr  border='0'>
<td  bgcolor='Green'>
<font size="3" color="white">
Status
</font>
</td>
</td>
</tr>
</table>
<table style="width:100%;">
<tr  bgcolor=gray >
<td style="width:30%;text-align: left; font-weight: bold;">UUH  </td>
<td style="width:20%;text-align: left; font-weight: bold;">PN</td>
<td style="width:20%;text-align: left; font-weight: bold;">KC </td>
<td style="width:20%;text-align: left; font-weight: bold;">CC</td>
</tr>
<tr>
<td  style"width:200px;"><#lsHs#></td>
<td ><#lsPN#></td>
<td><#lsKC#></td>
<td><#lsCC#></td>
</tr>
</table>
 </div>



<div >
<table >
<tr  border='0'>
<td  bgcolor='Green'>
<font size="3" color="white">
STD
</font>
</td>
</td>
</tr>
</table>


 <##TT##>


</div>

После того, как я применил следующий код две ошибки приходит в ConverterProperties

1.setCreateAcroForm не является членом iText.Html2pdf.ConverterProperties

2.setOutlineHandler не является членом iText.Html2pdf.ConverterProperties

 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
           Dim converterProperties As ConverterProperties = New ConverterProperties
            With converterProperties
                .SetBaseUri(".")
                .setCreateAcroForm(False)
                .SetCssApplierFactory(New DefaultCssApplierFactory())
                .SetFontProvider(New DefaultFontProvider())
                .SetMediaDeviceDescription(MediaDeviceDescription.CreateDefault())
                .setOutlineHandler(New OutlineHandler())
                .SetTagWorkerFactory(New DefaultTagWorkerFactory())
            End With
Dim HTML = ReadFile("Input_Template")
            For i = 0 To 10000
                LicenseKey.LoadLicenseFile("C:\iText7\itextkey-0.xml")
                Dim PDF = "E:\iText\testpdf " & i & ".pdf"
                Dim m As New MemoryStream
                Dim writer As PdfWriter
                Dim array() As Byte = System.Text.Encoding.ASCII.GetBytes("a")
                writer = New PdfWriter(PDF, New WriterProperties().SetStandardEncryption(array, array, EncryptionConstants.ALLOW_PRINTING,
                                  EncryptionConstants.ENCRYPTION_AES_256))
                HtmlConverter.ConvertToPdf(HTML, writer, converterProperties)
            Next
        End Sub

Если я прокомментирую две строки кода и запустив мою программу, в строке Code Converter i.e появляется ошибка. (HtmlConverter.ConvertToPdf (HTML, writer, converterProperties))

Ошибка: «Непрямой объект PDF принадлежит другому документу PDF. Скопируйте объект в текущий документ PDF».

так как coverterproperties находится вне цикла, появляется эта ошибка. если я положу все свойства в цикле, он будет работать нормально ... но правильно ли это для производительности?

Пожалуйста, помогите мне за эти три ошибки ..?

Ответы на вопрос(1)

Ваш ответ на вопрос