Here is a sample code for wave PDF using the advanced PDF feature in NetSuite

<?xml version="1.0"?><!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">
<pdf>
<head>
<link name="NotoSans" type="font" subtype="truetype" src="${nsfont.NotoSans_Regular}" src-bold="${nsfont.NotoSans_Bold}" src-italic="${nsfont.NotoSans_Italic}" src-bolditalic="${nsfont.NotoSans_BoldItalic}" bytes="2" />
<#if .locale == "zh_CN">
<link name="NotoSansCJKsc" type="font" subtype="opentype" src="${nsfont.NotoSansCJKsc_Regular}" src-bold="${nsfont.NotoSansCJKsc_Bold}" bytes="2" />
<#elseif .locale == "zh_TW">
<link name="NotoSansCJKtc" type="font" subtype="opentype" src="${nsfont.NotoSansCJKtc_Regular}" src-bold="${nsfont.NotoSansCJKtc_Bold}" bytes="2" />
<#elseif .locale == "ja_JP">
<link name="NotoSansCJKjp" type="font" subtype="opentype" src="${nsfont.NotoSansCJKjp_Regular}" src-bold="${nsfont.NotoSansCJKjp_Bold}" bytes="2" />
<#elseif .locale == "ko_KR">
<link name="NotoSansCJKkr" type="font" subtype="opentype" src="${nsfont.NotoSansCJKkr_Regular}" src-bold="${nsfont.NotoSansCJKkr_Bold}" bytes="2" />
<#elseif .locale == "th_TH">
<link name="NotoSansThai" type="font" subtype="opentype" src="${nsfont.NotoSansThai_Regular}" src-bold="${nsfont.NotoSansThai_Bold}" bytes="2" />
</#if>
<macrolist>
<macro id="nlfooter">
</macro>
</macrolist>
<style type="text/css">* {
<#if .locale == "zh_CN">
font-family: NotoSans, NotoSansCJKsc, sans-serif;
<#elseif .locale == "zh_TW">
font-family: NotoSans, NotoSansCJKtc, sans-serif;
<#elseif .locale == "ja_JP">
font-family: NotoSans, NotoSansCJKjp, sans-serif;
<#elseif .locale == "ko_KR">
font-family: NotoSans, NotoSansCJKkr, sans-serif;
<#elseif .locale == "th_TH">
font-family: NotoSans, NotoSansThai, sans-serif;
<#else>
font-family: NotoSans, sans-serif;
</#if>
}
.tableStyleGeneral{
font-size: 9pt;
table-layout: fixed;
border-collapse: collapse;
}
.tableStyleSpecific{
font-size: 9pt;
table-layout: fixed;
border-collapse: collapse;
width: 100%;
}
.thStyle{
border: 1px solid black;
font-weight: bold;
font-size: 8pt;
vertical-align: middle;
padding: 5px 6px 3px;
background-color: #e3e3e3;
color: #333333;
}
.thStyleOrderItem{
border: 1px solid black;
font-weight: bold;
font-size: 8pt;
padding: 10px 6px;
background-color: #e3e3e3;
color: #333333;
}
.tdStyle{
border: 1px solid black;
}
.myDiv {
width: 100%;
background-color: #e3e3e3;
font-size: 10pt;
padding: 10px 6px;
margin-top: 2px;
margin-bottom: 2px;
margin-left: 25px;
margin-right: 25px;
}
td {
padding: 2px 2px;
}
td p {
align: left;
}
</style>
</head>
<body footer="nlfooter" footer-height="2pt" padding="0.5in 0.1in 0.5in 0.1in" size="Letter-LANDSCAPE">
<#list wavedata as picktasks><#if picktasks_index gt 0><pbr></pbr> </#if><!-- start items --> <#list picktasks as lineitem> <#if lineitem_index==0>
<table style="width: 100%; font-size: 9pt;"><tr>
<td style="padding: 0; vertical-align:top;"><#if companyInformation.logoUrl?length != 0><img src="${companyInformation.logoUrl}" style="float: left; margin: 5px; display: block; height: auto; width:200px;" /> </#if></td>
<td align="center" style="padding: 0; font-size: 18pt; vertical-align:top;"><b>Pick and Ship Report</b></td>
<td align="right" style="padding: 0; vertical-align:top;"><pagenumber/> of <totalpages/></td>
</tr>
</table>
<table style="width: 100%; font-size: 9pt; margin-left: 10px; margin-right: 10px;">
<tr>
<td>Customer Name</td> <td>: ${lineitem.customer}</td>
<td >${record.name@label}</td>
<td><barcode codetype="code128" showtext="true" value="${record.name}"/></td>
<td> ${lineitem.docnum@label}</td>
<td><barcode codetype="code128" showtext="true" value="${lineitem.docnum}"/></td>
</tr>
<tr>
<td>Ship to Address</td>
<td>: ${lineitem.shipaddress1}</td>
</tr>
<tr>
<td>Ship to City</td>
<td>: ${lineitem.shipcity}</td>
</tr>
<tr>
<td>Ship to State</td>
<td>: ${lineitem.shipstate}</td>
<td>${createdlabel}</td>
<td>: ${record.createddate}</td>
</tr>
<tr>
<td>Ship to Zipcode</td>
<td>: ${lineitem.shipzip}</td>
</tr>
<tr>
<td>Ship to Country</td>
<td>: ${lineitem.shipcountry}</td>
</tr></table>
</#if>
<table class="tableStyleSpecific" style="width: 100%;"><#if lineitem_index==0>
<thead>
<tr>
<th class="thStyleOrderItem" >${lineitem.itemname@label}</th>
<th class="thStyleOrderItem">${lineitem.description@label}</th>
<th class="thStyleOrderItem">Item Alias</th>
<th class="thStyleOrderItem">Quantity</th>
<th class="thStyleOrderItem" >${binlabel}</th>
<th class="thStyleOrderItem">${lineitem.shipmethod@label}</th>
<th class="thStyleOrderItem">${lineitem.picktaskname@label}</th>
</tr>
</thead>
</#if><tr>
<td align="center" class="tdStyle" line-height="100%" style="padding: 20px 2px 20px 2px;" vertical-align="middle"><barcode codetype="code128" showtext="true" value="${lineitem.itemname}" width="100%"/></td>
<td align="center" class="tdStyle" line-height="100%" vertical-align="middle">${lineitem.description}</td>
<td align="center" class="tdStyle" line-height="100%" vertical-align="middle">${lineitem.itemname}</td>
<td align="center" class="tdStyle" line-height="100%" vertical-align="middle">${lineitem.quantity}</td>
<td align="center" class="tdStyle" line-height="100%" vertical-align="middle">
<#if lineitem.status=="FAILED">${lineitem.statusname}: ${lineitem.failmessage} <#else>
<#if lineitem.binName1!=""> <barcode codetype="code128" showtext="true" value="${lineitem.binName1}" width="100%" />
<#if lineitem.binName2!=""><br /><barcode codetype="code128" showtext="true" value="${lineitem.binName2}" width="100%" />
<#if lineitem.binName3!=""><br /><barcode codetype="code128" showtext="true" value="${lineitem.binName3}" width="100%" />
<#if lineitem.binName4!=""><br /><barcode codetype="code128" showtext="true" value="${lineitem.binName4}" width="100%" />
<#if lineitem.binName5!=""><br /><barcode codetype="code128" showtext="true" value="${lineitem.binName5}" width="100%" />
</#if> </#if> </#if> </#if> </#if> </#if>
</td>
<td align="center" class="tdStyle" line-height="100%" vertical-align="middle">${lineitem.shipmethod}</td>
<td align="center" class="tdStyle" line-height="100%" style=" padding: 20px 2px 20px 2px;" vertical-align="middle"><barcode codetype="code128" showtext="true" value="${lineitem.picktaskname}" width="100%" /></td>
</tr></table>
</#list><!-- end items -->
<div style="width: 100%;">
<p align="center" style="font-size: 9pt;" ><br /><b>THANK YOU FOR YOUR PURCHASE, WE VALUE YOUR BUSINESS!</b></p>
</div>
<div class="myDiv" style="margin-left: 25px; margin-right: 25px; font-family: Arial, sans-serif;font-size: 9pt;">
<p align="center"><b>Return Policy</b></p>
<p align="center">We want you to be fully satisfied with your purchase. Within 30 days of receipt, you can return your products for any reason for a full refund less shipping charges. Beyond the 30-day return period, you are covered under our factory warranty. For details, please refer to our Warranty Info and Terms via the Support tab on the appropriate website.</p>
<table style="width: 100%;"><tr>
<td> </td>
<td> </td>
<td><img src="${companyInformation.logoUrl}" style="width:35%; height:35%" /></td>
<td> </td>
<td> </td>
<td><img src="${companyInformation.logoUrl}" style="width:35%;height:35%;" /></td>
<td> </td>
</tr></table>
<p align="center"><b>Questions?</b></p>
<p align="center">We want to make sure you’re 100% happy!<br /> If you have any questions or concerns about your purchase or your product, please contact us at <a style="text-decoration: none;" href="tel:000-000-0000">000-000-0000</a>.<br />Customer Care is available Monday through Friday 9:00 AM-5:00 PM Eastern Time.<br />Thank you again for your business!</p>
</div>
<div>
<p style="color: #FF0000;font-size: 8pt;margin-left: 25px; margin-right: 25px; font-family: Arial, sans-serif;"><b>*Important Return Information:</b> All returns for merchandise purchased via retail outlets (in-store or online), or an online marketplaces including Amazon, Ebay and Walmart must be returned to the retailer(seller)/marketplace in accordance with their policies, typically found on their website. These returns can usually be facilitated online via your order/account or by returning the merchandise to the store. Only orders placed directly at <a style="text-decoration: none;" href="https://www.test.com/">test.com</a>, <a style="text-decoration: none;" href="https://www.test.com/">test.com</a>, or by calling our 800 number are eligible for return to our facility. To request a return, please visit <a style="text-decoration: none;" href="https://www.test.com/">test.com</a> or <a style="text-decoration: none;" href="https://www.test.com/">test.com</a> click Support > Returns > and complete the Return Authorization Form, or call us at <a style="text-decoration: none;" href="tel:000-000-0000">000-000-0000</a>, option 2 on the menu. Any returned merchandise that does not meet this criterion will be returned to sender. Thank you.</p>
</div>
</#list>
</body>
</pdf>