【问题标题】:Expo React Native PDF download invalid formatExpo React Native PDF 下载格式无效
【发布时间】:2022-12-30 16:40:14
【问题描述】:

我正在使用 expo 文件系统下载 pdf。它已成功下载,但是当尝试打开 pdf 文件时它说“无法显示无效格式的 pdf。首先我从后端下载 pdf,然后使用缓冲区转换为 base64。 这是我遵循的参考堆栈溢出Expo React Native, saving PDF files to Downloads folder

import * as FileSystem from 'expo-file-system';
import { StorageAccessFramework } from 'expo-file-system';
import {Buffer} from "buffer";

const downloadFile = async (payment) => {
    const pdf = await grabPdf();

    const permissions = await StorageAccessFramework.requestDirectoryPermissionsAsync();
    if (!permissions.granted) {
        return;
    }

    try {
        await StorageAccessFramework.createFileAsync(permissions.directoryUri, 'inv'+payment.invoice_number, 'application/pdf')
            .then(async(uri) => {
                await FileSystem.writeAsStringAsync(uri, pdf, { encoding: FileSystem.EncodingType.Base64 });
                Alert.alert('Success', 'Successfully downloaded')
            })
            .catch((e) => {
                console.log(e.response.data);
                alert(e)
            });
    } catch (e) {
        throw new Error(e);
        alert(e)
    }
}

从后端下载 pdf 并使用缓冲区转换为 base 64。

const grabPdf = async () => {
    axiosConfig.defaults.headers.common['Authorization'] = `Bearer ${user.token}`;
    const response = await axiosConfig('/user/invoice/C0F19758-0001/247')
        .catch(error => {
            console.log('Error: ', error.response.data)
            alert('Error: '+ error.response.data)
        });

    const buff = Buffer.from(response.data, 'base64')
    return buff.toString('base64')
}

【问题讨论】:

    标签: android react-native expo


    【解决方案1】:

    通过从 php 后端将 pdf 转换为 base64 解决了这个问题

    $base64 = chunk_split(base64_encode(file_get_contents($filename)));

    return $base64;
    

    在传递给 react-native 之前

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-16
      • 1970-01-01
      • 1970-01-01
      • 2018-09-18
      • 2020-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多