@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 находится вне цикла, появляется эта ошибка. если я положу все свойства в цикле, он будет работать нормально ... но правильно ли это для производительности?
Пожалуйста, помогите мне за эти три ошибки ..?