Я использую следующий скрипт для отображения PDF с использованием PDF.js, но он ничего не показывает на холсте. Можете ли вы сказать мне, где я не так с этим? Я пытался найти документацию в Интернете, но не смог найти никакой помощи.
@Model.B - строка base64.
<script>
var pdfData = atob("@Model.B");
var pdfjsLib = window['pdfjs-dist/build/pdf'];
pdfjsLib.GlobalWorkerOptions.workerSrc = '//mozilla.github.io/pdf.js/build/pdf.worker.js';
var loadingTask = pdfjsLib.getDocument({ data: pdfData });
loadingTask.getDocument(pdfData).promise.then(function (pdf) {
thePdf = pdf;
viewer = document.getElementById('pdfData');
for (page = 1; page <= pdf.numPages; page++) {
canvas = document.createElement("canvas");
canvas.className = 'pdf-page-canvas';
viewer.appendChild(canvas);
renderPage(page, canvas);
}
});
function renderPage(pageNumber, canvas) {
thePdf.getPage(pageNumber).then(function (page) {
viewport = page.getViewport(scale);
canvas.height = viewport.height;
canvas.width = viewport.width;
page.render({ canvasContext: canvas.getContext('2d'), viewport: viewport });
});
}
</script>
Ниже приводится раздел. Я использовал тег embed для проверки правильности данных PDF.
<div class="form-inline" style="margin-left:130px; margin-top:20px; display:none" id="pdfData" role="group" aria-label="Basic example">
<embed src="data:application/pdf;base64,@Model.B" style="height: 750px; width: 1000px;" alt="pdf" type="application/pdf"/>
@ViewBag.Error
<div class="form-group row" style="margin-top: 20px; margin-left: 25px">
Accept Policy
<div class="col-sm-6 col-sm-offset-2 col-xs-6 col-xs-offset-0" , style="text-align:justify; margin-top: 20px;">
@Html.CheckBoxFor(model => model.C)
@Html.ValidationMessageFor(model => model.C, "", new { @class = "form-text", style = "color:rgb(184, 10, 10); font-size:12px;" })
</div>
<div class="form-inline" role="group" aria-label="Basic example">
<button type="submit" class="btn btn-default btn-sm" id="submit_Agreement" name="submit_Agreement" title="Agree to Policy" onclick="">
Submit
</button>
</div>
</div>
</div>