Winnovative HTML to PDF Converter allows you to transform any HTML element to an internal link to another HTML element in generated PDF document by using the data-internal-link-enabled and data-link-target-id on the link source HTML element and the data-target-id attribute on link target HTML element. With data-internal-link-enabled attribute you can also disable the automatic conversion of an internal link in HTML to an internal link in PDF when you set this attribute to false.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;
// Use Winnovative Namespace
using Winnovative;
namespace WnvHtmlToPdfDemo.Controllers.HTML_to_PDF.Internal_Links
{
public class Define_Custom_Internal_LinksController : Controller
{
[HttpPost]
public ActionResult ConvertHtmlToPdf(IFormCollection collection)
{
// Create a HTML to PDF converter object with default settings
HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();
// Set license key received after purchase to use the converter in licensed mode
// Leave it not set to use the converter in demo mode
htmlToPdfConverter.LicenseKey = "fvDh8eDx4fHg4P/h8eLg/+Dj/+jo6Og=";
// Set an adddional delay in seconds to wait for JavaScript or AJAX calls after page load completed
// Set this property to 0 if you don't need to wait for such asynchcronous operations to finish
htmlToPdfConverter.ConversionDelay = 2;
byte[] outPdfBuffer = null;
if (collection["HtmlPageSource"] == "convertHtmlRadioButton")
{
string htmlWithInternalLinksAttributes = collection["htmlStringTextBox"];
string baseUrl = collection["baseUrlTextBox"];
// Convert a HTML string with internal links to a PDF document in a memory buffer
outPdfBuffer = htmlToPdfConverter.ConvertHtml(htmlWithInternalLinksAttributes, baseUrl);
}
else
{
string url = collection["urlTextBox"];
// Convert a HTML page with internal links to a PDF document in a memory buffer
outPdfBuffer = htmlToPdfConverter.ConvertUrl(url);
}
// Send the PDF file to browser
FileResult fileResult = new FileContentResult(outPdfBuffer, "application/pdf");
fileResult.FileDownloadName = "Custom_Internal_Links.pdf";
return fileResult;
}
}
}
<!DOCTYPE html>
<html>
<head>
<title>Define Custom URI Links in HTML</title>
</head>
<body style="font-family: 'Times New Roman'; font-size: 14px">
<table data-internal-link-enabled="true" data-link-target-id="internalLinkTargetID" style="border: 1px solid green; width: 650px">
<tr>
<td style="font-weight: bold; color: navy" colspan="2">This HTML Table is Converted to an Internal Link in PDF Using 'Data-Internal-Link-Enabled' Attribute
</td>
</tr>
<tr>
<td style="width: 350px">
<img alt="Logo Image" style="width: 350px" src="img/logo.jpg" />
</td>
<td style="font-size: 40px; font-weight: normal; color: navy; text-align: center">>>>
</td>
</tr>
</table>
<br />
<br />
<span style="font-weight: bold; color: black">The Internal Link Below was Explicitly Disabled Using 'Data-Internal-Link-Enabled' Attribute:</span><br />
<br />
<a data-link-enabled="false" href="#disableLinkTargetID" style="font-size: 18px; font-weight: bold; color: gray">This Internal Internal Link is Disabled in PDF</a>
<br />
<br />
<span data-target-id="internalLinkTargetID" style="page-break-before: always; font-size: 14px; font-weight: bold; color: green">This HTML element is the target of the custom internal link defined in HTML by Data-Internal-Link-Enabled="true" attribute.<br />
The element has a 'Data-Target-Id' attribute with value 'internalLinkTargetID' matching the value of the 'Data-Link-Target-Id'<br />
attribute of the internal link.
</span>
<br />
<br />
<span id="disableLinkTargetID" style="page-break-before: always; font-size: 14px; font-weight: bold; color: gray">This HTML element is the target of the internal link disabled by Data-Internal-Link-Enabled="false" attribute.
</span>
</body>
</html>