javascript - 在 Chrome 上上传之前显示 pdf 的预览

标签 javascript html google-chrome pdf

我想在上传之前显示 pdf 的预览。它适用于 Firefox,但不适用于 Chrome。如果我尝试使用图像,它对两者都有效。

这是我的代码:

<input required="required" accept="image/*, application/pdf" class="uploadjs" data-id="3" type="file">

<div class="preview">
  <img id="preview-3" alt="">
  <embed id="preview-3_1" type="application/pdf">
</div>


function readURL(input, id) 
{
    var mime= input.files[0].type;

    if (input.files && input.files[0]) 
    {
        var reader = new FileReader();

        reader.onload = function (e) 
        {
            if(mime.split("/")[0]=="image")
            {
                $('#preview-'+id+'_1').attr('src', '');
                $('#preview-'+id).attr('src', e.target.result);

            }
            else
            {
                $('#preview-'+id).attr('src', '');
                $('#preview-'+id+'_1').attr('src', e.target.result);
            }
        }

        reader.readAsDataURL(input.files[0]);
    }
}

$(function()
{
    $(".uploadjs").change(function()
    {
        var id = $(this).data('id')
        readURL(this, id);
    });
})

还有一个jsfiddle:https://jsfiddle.net/g9ttqxyj/2/

我尝试过多种想法,例如:嵌入、iframe 和对象,但都不适用于 chrome。

最佳答案

对于任何偶然发现这一点的人: 使用对象标签封装嵌入标签。 对象标签的数据属性必须链接到 .pdf。 将 html 更改为:

<object type="application/pdf" data ="#" id="pdfViewer">
    <embed id="preview-3_1" type="application/pdf">
</object>

将其添加到您的 jquery 中:

$('#pdfViewer').attr('data',  e.target.result);

https://stackoverflow.com/a/23681394

关于javascript - 在 Chrome 上上传之前显示 pdf 的预览,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42440534/

相关文章:

javascript - 设置 Bootstrap 面板大小 100% + Highcharts 内容

javascript - 如何在 Phaser 3 中正确调整图像大小以保持质量

html - 在 CSS 中为页面上的每个元素添加叠加颜色

javascript - node.js index.html javascript函数未定义

javascript - Chart.js chart.update() 方法没有做任何事情

javascript - 从选择列表创建自动链接

javascript - 可变高度的滑动门按钮

javascript - Chrome 中极其奇怪的故障 - 解析字符串的内容!

javascript - 使按钮上的 Font Awesome 图标不可点击

windows - 通过中断的连接从互联网下载文件