在JavaScript中将PDF转换为Base64编码字符串

31

我需要用Javascript将PDF文件编码为Base64。我可以在Javascript中创建Base64编码的jpeg或png图像,但是我找不到任何方法或示例代码来从PDF文件创建一个Base64编码的字符串。

是否有使用HTML5画布的解决方案?

谢谢。


1
https://dev59.com/bWct5IYBdhLWcg3wcs-G和 .window.open("data:application/pdf;base64," + Base64.encode(out)); - Naresh Kumar
停!不要再使用Base64了。有更好的方法来处理二进制数据,比如使用ObjectURLs、blobs和typed arrays。open(URL.createObjectURL(file)) - undefined
3个回答

41
请尝试以下方法:
<input id="inputFile" type="file" onchange="convertToBase64();" />

<script type="text/javascript">
    function convertToBase64() {
        //Read File
        var selectedFile = document.getElementById("inputFile").files;
        //Check File is not Empty
        if (selectedFile.length > 0) {
            // Select the very first file from list
            var fileToLoad = selectedFile[0];
            // FileReader function for read the file.
            var fileReader = new FileReader();
            var base64;
            // Onload of file read the file content
            fileReader.onload = function(fileLoadedEvent) {
                base64 = fileLoadedEvent.target.result;
                // Print data in console
                console.log(base64);
            };
            // Convert data to base64
            fileReader.readAsDataURL(fileToLoad);
        }
    }
</script>


这个解决方案在各种浏览器和文件类型中都表现出色。 - AJ Zane

2

我之前看过这个链接,你建议后我也试过了:http://blogs.adobe.com/formfeed/2009/08/base64_encode_a_pdf_attachment.html 这个链接对于文本文件来说是有效的,但对于PDF则无效。当我写下 var inputStream = event.target.getDataObjectContents("1.pdf"); document.getElementById('data2').value = inputStream; 它并没有返回任何值。而你分享的第二个链接也没有关于将PDF转换为字符串的内容。它仅介绍了关于base64编码的内容,而我对于图片或字符串的base64编码没有问题。 - onuryilmaz
1
我的目标是获取 PDF 文件的 base64 编码字符串表示。 - onuryilmaz
@onuryilmaz 你找到答案了吗?我也遇到了同样的问题。 - Rajesh Kumar

-1

     function Selectfile() {
        document.getElementById('fileInput').click();
    };

     function handleFileSelect (event) {
        var selectedFile = event.target.files[0];
        if (selectedFile) {
            var reader = new FileReader();
            reader.onload = function (event) {
            
                    var selectedFile = selectedFile;
                    // Convert the file to Base64
                    var selectedFileBase64 = event.target.result.split(',')[1];
                    console.log(selectedFileBase64);
               
            };
            reader.readAsDataURL(selectedFile);
        }
    };
    document.getElementById('fileInput').addEventListener('change', handleFileSelect);
<button onclick="Selectfile()">Browse</button>

<input type="file" id="fileInput" style="display: none;"/>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接