Google Drive Picker 通过 API 生成空白 pdf

问题描述 投票:0回答:0

我使用Javascript和Google Drive API来获取PDF,但我无法正确解析文件:页数是正确的,但内容是空白的。

我非常确定帮助浏览器读取 pdf.js 中的 typedarray 的函数可以工作,因为它还用于转换从 HTML 输入标记获取的 PDF。

我找到了这个Q&A,但是这个方法已经没有用了。看来Google改变了API的方法。

我也发现了this,然后我尝试使用

new File()
而不是
new Blob()
。可惜还是失败了。

顺便说一下,webViewLink 和 webContentLinl 都可以工作。我可以使用它们下载或预览 PDF。

还有其他方法可以解决这个问题吗?谢谢您的帮助。

这是我的代码

        createPicker() {
            const view = new window.google.picker.View(window.google.picker.ViewId.DOCS);
            view.setMimeTypes('application/pdf');
            const picker = new window.google.picker.PickerBuilder()
                .enableFeature(window.google.picker.Feature.NAV_HIDDEN)
                .enableFeature(window.google.picker.Feature.MULTISELECT_ENABLED)
                .setDeveloperKey(process.env.GOOGLE_CONFIG.PICKER_API_KEY)
                .setAppId(process.env.GOOGLE_CONFIG.APP_ID)
                .setOAuthToken(this.accessToken)
                .addView(view)
                .addView(new window.google.picker.DocsUploadView())
                .setCallback(this.pickerCallback)
                .build();
            picker.setVisible(true);
        },
        async pickerCallback(data) {
            if (data.action === window.google.picker.Action.PICKED) {
                const document = data[window.google.picker.Response.DOCUMENTS][0];
                const fileId = document[window.google.picker.Document.ID];

                try {
                    const response = await window.gapi.client.drive.files.get({
                        fileId,
                        alt: 'media',
                    });
                    const blob = new Blob([response.body], { type: document.mimeType });
                    const arrayBuffer = await blob.arrayBuffer();
                    const typedarray = new Uint8Array(arrayBuffer);
                    // TODO: use pdf.js read file
                } catch (error) {
                    console.error('Error getting file content:', error);
                }
            }
        },
javascript google-cloud-platform google-drive-api pdf.js
© www.soinside.com 2019 - 2024. All rights reserved.