The converter offers two conversion triggering modes: Auto and Manual. The triggering mode is controlled by the HtmlToPdfTriggerMode property of the converter.
When triggering mode is Auto, the conversion to PDF starts immediately after the HTML document was loaded in converter and this default behavior is suitable for converting most of the HTML documents. Optionally you can specify an additional time in seconds to wait before starting the conversion to allow more time to JavaScript to update the web page using the WaitBeforeConvert property of the converter.
For a more precise control of when the conversion starts you can use the Manual triggering mode. In this case the converter will wait for the hiqPdfConverter_startConversion() method to be manually called from JavaScript. The method is available only when the conversion triggering mode is set to Manual.
Below there is an example of HTML document which requires manual triggering of the conversion. In the sample script we provide, a ticks counter is incremented each 30 ms after the document was loaded. When the ticks count reached 100 in about 3 seconds the hiqPdfConverter_startConversion() method is called if it is available.
In the HTML script below you can also notice the usage of hiqPdfInfo.Version member. This member is exposed by the converter to the JavaScript code in the HTML document being converted to offer information about the HiQPdf library version. The existence of the hiqPdfInfo object in JavaScript can be used to determine whether the document is currently loaded in HiQPdf converter.
<html>
<head>
<title>Conversion Triggering Mode</title>
</head>
<body>
<br />
<br />
<span style="font-family: Times New Roman; font-size: 10pt">
When the triggering mode is 'Manual' the conversion is triggered by the call to <b>hiqPdfConverter_startConversion()</b>
from JavaScript.<br />
In this example document the hiqPdfConverter_startConversion() method is called when the ticks count
reached 100 which happens in about 3 seconds.
</span>
<br />
<br />
<b>Ticks Count:</b> <span style="color: Red" id="ticks">0</span>
<br />
<br />
<!-- display HiQPdf HTML converter version if the document is loaded in converter-->
<span style="font-family: Times New Roman; font-size: 10pt">
HiQPdf Info:
<script type="text/javascript">
// check if the document is loaded in HiQPdf HTML to PDF Converter
if (typeof hiqPdfInfo == "undefined") {
// hiqPdfInfo object is not defined and the document is loaded in a browser
document.write("Not in HiQPdf");
}
else {
// hiqPdfInfo object is defined and the document is loaded in converter
document.write(hiqPdfInfo.Version);
}
</script>
</span>
<br />
<script type="text/javascript">
var ticks = 0;
function tick() {
// increment ticks count
ticks++;
var ticksElement = document.getElementById("ticks");
// set ticks count
ticksElement.innerHTML = ticks;
if (typeof hiqPdfConverter_startConversion == 'function' && ticks == 100) {
// trigger conversion
ticksElement.style.color = "green";
hiqPdfConverter_startConversion();
}
else {
// wait one more tick
setTimeout("tick()", 30);
}
}
tick();
</script>
</body>
</html>
In this demo you learn how to configure the converter triggering mode. There are two conversion triggering modes: Auto and Manual. In the sample script above, a ticks counter is incremented each 30 ms after the document was loaded. When the ticks count reached 100 in about 3 seconds the hiqPdfConverter_startConversion() is called if the conversion triggering mode is Manual and the function is available.
When the triggering mode is set to manual and the the ticks count reached exactly 100 the hiqPdfConverter_startConversion() is called to start the conversion to PDF.
When the triggering mode is Auto the conversion will start immediately after the wait time expired.
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Hosting;
using HiQPdf.Chromium;
namespace HiQPdf_Chrome_AspNetDemo.Controllers
{
public class ConversionTriggeringModeController : Controller
{
IWebHostEnvironment m_hostingEnvironment;
public ConversionTriggeringModeController(IWebHostEnvironment hostingEnvironment)
{
m_hostingEnvironment = hostingEnvironment;
}
private void SetViewData()
{
ViewData["ContentRootPath"] = m_hostingEnvironment.ContentRootPath + "/wwwroot";
}
// GET: ConversionTriggeringMode
public ActionResult Index()
{
SetViewData();
return View();
}
[HttpPost]
public ActionResult ConvertToPdf(IFormCollection collection)
{
// create the HTML to PDF converter
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
// set a demo serial number
htmlToPdfConverter.SerialNumber = "YCgJMTAE-BiwJAhIB-EhlWTlBA-UEBRQFBA-U1FOUVJO-WVlZWQ==";
// set triggering mode; for WaitTime mode set the wait time before convert
switch (collection["dropDownListTriggeringMode"])
{
case "Auto":
htmlToPdfConverter.TriggerMode = ConversionTriggerMode.Auto;
htmlToPdfConverter.WaitBeforeConvert = int.Parse(collection["textBoxWaitTime"]);
break;
case "Manual":
htmlToPdfConverter.TriggerMode = ConversionTriggerMode.Manual;
break;
default:
htmlToPdfConverter.TriggerMode = ConversionTriggerMode.Auto;
break;
}
// convert the URL to PDF
byte[] pdfBuffer = htmlToPdfConverter.ConvertHtmlToMemory(collection["textBoxHtmlCode"], null);
FileResult fileResult = new FileContentResult(pdfBuffer, "application/pdf");
fileResult.FileDownloadName = "TriggeringMode.pdf";
return fileResult;
}
}
}