JSPDF-autotable: jsPDF не определен - PullRequest
0 голосов
/ 21 ноября 2018

Пытаюсь дать возможность сгенерировать pdf в xpages У меня есть код:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">

<xp:this.resources>
<xp:script src="generate.js" clientSide="true"></xp:script>
</xp:this.resources>
<script type='text/javascript' src='js/jspdf.min.js'></script>
<script type="text/javascript"  src="js/jspdf.plugin.autotable.js"></script>

<button onclick="generate()">Generate PDF</button>

<xp:br></xp:br>
<xp:br></xp:br>
<table id="basic-table" >
<thead>
<tr>
  <th>ID</th>
  <th>First name</th>
  <th>Last name</th>
  <th>Email</th>
  <th>Country</th>
  <th>IP-address</th>
</tr>
</thead>
<tbody>
<tr>
  <td align="right">1</td>
  <td>Donna</td>
  <td>Moore</td>
  <td>dmoore0@furl.net</td>
  <td>China</td>
  <td>211.56.242.221</td>
</tr>
    <tr>
      <td align="right">2</td>
      <td>Janice</td>
      <td>Henry</td>
      <td>jhenry1@theatlantic.com</td>
      <td>Ukraine</td>
      <td>38.36.7.199</td>
     </tr>
     <tr>
      <td align="right">3</td>
      <td>Ruth</td>
      <td>Wells</td>
      <td>rwells2@constantcontact.com</td>
      <td>Trinidad and Tobago</td>
      <td>19.162.133.184</td>
    </tr>
    <tr>
      <td align="right">4</td>
      <td>Jason</td>
      <td>Ray</td>
      <td>jray3@psu.edu</td>
      <td>Brazil</td>
      <td>10.68.11.42</td>
    </tr>
    <tr>
      <td align="right">5</td>
      <td>Jane</td>
      <td>Stephens</td>
      <td>jstephens4@go.com</td>
      <td>United States</td>
      <td>47.32.129.71</td>
    </tr>
    <tr>
      <td align="right">6</td>
      <td>Adam</td>
      <td>Nichols</td>
      <td>anichols5@com.com</td>
      <td>Canada</td>
      <td>18.186.38.37</td>
    </tr>
  </tbody>
</table>

    <xp:br></xp:br>
</xp:view>

Я получаю сообщение об ошибке в консоли:

Uncaught ReferenceError: jsPDF нетопределяется при генерировании (generate: 3) в HTMLButtonElement.onclick (test_pdf2.xsp: 20) generate @ generate: 3 onclick @ test_pdf2.xsp: 20

и строке 3 generate.js = var doc = new jsPDF('p', 'pt');

Когда я смотрю на источники, я вижу под js две библиотеки

Что не так?

1 Ответ

0 голосов
/ 21 ноября 2018

jsPDF использует AMD.Вот фрагмент из исходного кода jspdf.min.js, где используется AMD:

function"==typeof define&&define.amd?define(e)

К сожалению, загрузка AMD конфликтует с Dojo в XPages.См. этот ответ о том, как удалить загрузку AMD .

Вам нужно изменить часть загрузки AMD, изменив код в jspdf.min.js на этот:

function"==typeof define&&false?define(e)

jspdf.plugin.autotable.js тоже использует AMD.Здесь вам также нужно заменить define.amd на false.

...