我使用
react-native
创建了一个应用程序,并有一些 base64 数据
API。我想将 base64 数据转换为 pdf 格式。如果你有什么想法
请帮我。谢谢。
您可以使用react-native-pdf包(https://www.npmjs.com/package/react-native-pdf)。如果你想在你的应用程序中显示 pdf,这个包将非常有用,因为它支持从 iOS 和 Android 的 Base64 字符串加载 PDF。您可以从 Base64 数据中指定 pdf 的来源,如示例所示:
{uri:"data:application/pdf;base64,JVBERi0xLjcKJc..."}
我假设,
converting to PDF
如saving the base64 format data as PDF in some file
。
下面的代码可以帮助你做同样的事情,
let fPath = Platform.select({
ios: fs.dirs.DocumentDir,
android: fs.dirs.DownloadDir,
});
fPath = `${fPath}/pdfFileName.pdf`;
if (Platform.OS === PlatformTypes.IOS) {
await fs.createFile(fPath, base64Data, "base64");
} else {
await fs.writeFile(fPath, base64Data, "base64");
}
// RNFetchBlob can be used to open the file
您可以通过使用 React Native 中的
rn-fetch-blob
库来实现这一点。首先,请确保安装它:
npm install rn-fetch-blob
然后,创建一个函数来下载文件并将其保存到本地。
import RNFetchBlob from 'rn-fetch-blob';
async function downloadFile(url: string, fileName: string /* eg : file.pdf; image.png, document.csv*/) {
let dirs = RNFetchBlob.fs.dirs;
let path = `${dirs.DownloadDir}/${fileName}`; //set your path
try {
const res = await RNFetchBlob.config({
fileCache: true,
addAndroidDownloads: {
useDownloadManager: true,
notification: true,
mediaScannable: true,
title: fileName,
path,
},
}).fetch('GET', url)
.then(() => {
// Do any additional processing or UI updates after successful download if needed
})
.catch(() => {
console.error('Download Error:', error);
// Handle errors or show a relevant message to the user
})
} catch (error) {
AppSettings.toggleShowProgress()
console.error('Download Error:', error);
}
}
// Call the function with the URL and desired file name
downloadFile("https://ou.s3.amazonaws.com/5f50c17SignedHeaders=host", 'file.pdf');
// or
downloadFile("https://picsum.photos/200/300", 'image.jpeg');
确保将示例 URL 替换为您的实际 API 端点 URL。文件扩展名必须与文件的实际格式匹配。
此功能使用
rn-fetch-blob
下载文件并将其保存到设备的下载目录中。然后,您可以根据需要使用此本地文件,例如,显示 PDF。