word ,pdf ,轉(zhuǎn)圖片通過(guò)base 64 轉(zhuǎn)前端

@PostMapping("/convertToBase64/{fileRename}")
public AjaxResult convertToBase64(@PathVariable String fileRename) throws IOException {
List<String> base64Images = new ArrayList<>();
if (StringUtils.isEmpty(fileRename))
return AjaxResult.error("文件不能為空");
String result = businessManagementService.detailsNodeDataDownload(fileRename);
if (StringUtils.isEmpty(result) || result.contains("access")){
return AjaxResult.error("下載失?。?);
}

    String fileUrl = result;
    int dotIndex = fileRename.lastIndexOf('.');
    String fileType =   fileRename.substring(dotIndex + 1);

    byte[] fileBytes;
    if ("pdf".equalsIgnoreCase(fileType)) {
        // 對(duì)PDF文件進(jìn)行轉(zhuǎn)換
        base64Images = convertPdfToBase64(fileUrl);
    } else if ("img".equalsIgnoreCase(fileType)||"png".equalsIgnoreCase(fileType)) {
        // 對(duì)圖片文件進(jìn)行轉(zhuǎn)換
        fileBytes = convertImageToBase64(fileUrl);
        String base64File = "data:image/png;base64," + Base64.getEncoder().encodeToString(fileBytes);
        base64Images.add(base64File);

    } else if ("doc".equalsIgnoreCase(fileType)||"docx".equals(fileType)) {
        // 對(duì)Word文件進(jìn)行轉(zhuǎn)換
        base64Images = convertWordToBase64(fileUrl);

    } else {
        return error("Unsupported file type");
    }


    return success(base64Images);
}

private List<String> convertPdfToBase64(String imageUrl) throws IOException {
    // 從遠(yuǎn)程 URL 獲取 PDF 文檔
    URL url = new URL(imageUrl);
    try (PDDocument document = PDDocument.load(url.openStream())) {
        int numPages = document.getNumberOfPages();
        List<String> base64Images = new ArrayList<>();
        // 使用 PDFBox 將 PDF 轉(zhuǎn)換為 BufferedImage
        PDFRenderer renderer = new PDFRenderer(document);
        for (int pageIndex = 0; pageIndex < numPages; pageIndex++) {
            BufferedImage image = renderer.renderImage(pageIndex);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ImageIO.write(image, "png", baos);

            byte[] imageBytes = baos.toByteArray();
            String base64Image = "data:image/png;base64," + Base64.getEncoder().encodeToString(imageBytes);

            base64Images.add(base64Image);
        }
        return base64Images;
    }
}

private byte[] convertImageToBase64(String imageUrl) throws IOException {
    URL url = new URL(imageUrl);
    BufferedImage image = ImageIO.read(url);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ImageIO.write(image, "png", baos);

    return baos.toByteArray();
}

private List<String> convertWordToBase64(String wordFilePath) throws IOException {
    // 創(chuàng)建Document實(shí)例
    Document doc = new Document();
    List<String> base64Images = new ArrayList<>();
    InputStream inputStream = new URL(wordFilePath).openStream();
    // 加載Word文檔
    doc.loadFromStream(inputStream, FileFormat.Auto);

    BufferedImage[] images = doc.saveToImages(0, doc.getPageCount(), ImageType.Bitmap, 500, 500);

    for (BufferedImage image : images) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ImageIO.write(image, "png", baos);
        String base64Image = "data:image/png;base64," + Base64.getEncoder().encodeToString(baos.toByteArray());

        base64Images.add(base64Image);
     //   base64Images.add("base64Image");
    }
    return base64Images;

}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容