将HTML转换为-> PDF->转换为MULTIPARTFILE SpringBoot和Thymeleaf

玛利亚

我在React和SpringBoot上有一个关于合同管理的Web应用程序。用户应该能够添加新合同,然后将合同下载为PDF文件,以便他可以对其进行签名,然后上载已签名的pdf。我使用Java的MultipartFile完成了上载和下载的部分,并将pdfs存储在MySql数据库中。

PDF是在SpringBoot服务器中使用Thymeleaf通过HTML文件创建的。我不清楚如何将PDF文件转换为MultipartFile,因此我可以将其保存在数据库中。

而且我也想将文件转换为PDF,而不是将其保存在本地。我使用了iText HtmlConverter.convertToPdf(html,new FileOutputStream(name)); (com.itextpdf.html2pdf),我不知道如何从中获取PDF文件...然后转换为MultipartFile。

这是服务,我将数据从控制器传递到HTML文件,然后将其转换为PDF

@Service
public class PdfContentBuilder {

    private TemplateEngine templateEngine;

    @Autowired
    public PdfContentBuilder(TemplateEngine templateEngine) {
        this.templateEngine = templateEngine;
    }

    public String buildContract(Contract contract) {

        Context context = new Context();
        context.setVariable("data_contract", contract.getData());
        context.setVariable("number", contract.getNumber());

        return templateEngine.process("contract", context);
    }

    public void generatePdfFromHtml(String html, String name) throws IOException  {
        
        //here I would need to return a MultipartFile
        HtmlConverter.convertToPdf(html, new FileOutputStream(name));
    }
}

在这里,我尝试生成PDF

public MultipartFile createPDF(Contract contract){
    
    contract.setNumber(25314);
    Date myDate2 = new Date(System.currentTimeMillis());
    contract.setData(myDate2);


    String htmlString = pdfContentBuilder.buildContractTerti(contract);
    try {
        //here I don't know how to take the PDF as file and not save it local
        pdfContentBuilder.generatePdfFromHtml(htmlString, "filename-contract.pdf");

        return pdfMultipartFile;

    } catch (Exception e) {
        e.printStackTrace();
        return pdfMultipartFile;
    }
}

我搜索了HtmlConverter.convertToPdf,但没有一个版本返回文件,所有版本都返回void。如果有人可以帮助,请?

马克·斯特劳贝尔

首先将pdf写入字节数组,然后存储在文件中并创建响应:

public byte[] generatePdfFromHtml(String html, String name) throws IOException  {
  ByteArrayOutputStream buffer = new ByteArrayOutputStream();              
  HtmlConverter.convertToPdf(html, buffer);
  byte[] pdfAsBytes = buffer.toByteArray();
  try (FileOutputStream fos = new FileOutputStream(name)) {
   fos.write(pdfAsBytes);
  }
  return pdfAsBytes.
}

对于下载,请使用HttpEntity而不是MultipartFile,例如

HttpHeaders header = new HttpHeaders();
header.setContentType(MediaType.APPLICATION_PDF);
header.set(HttpHeaders.CONTENT_DISPOSITION,
                   "attachment; filename=" + fileName.replace(" ", "_"));
header.setContentLength(documentBody.length);

HttpEntity pdfEntity = new HttpEntity<byte[]>(pdfAsBytes, header);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用JavaScript将HTML转换为Docx和PDF

来自分类Dev

将HTML转换为Word然后转换为pdf

来自分类Dev

Springboot & Thymeleaf HTML 模板:转换为 PDF 后中文字符消失

来自分类Dev

使用httr将HTML转换为PDF

来自分类Dev

使用itextsharp将HTML转换为PDF

来自分类Dev

从JavaScript将HTML页面转换为PDF

来自分类Dev

使用 Django 将 HTML 转换为 PDF

来自分类Dev

Python 将 json/html 转换为 pdf

来自分类Dev

无法将 Html 内容转换为 Pdf

来自分类Dev

使用html2canvas和jspdf将html页面截图转换为pdf

来自分类Dev

使用c#和asp.net将HTML内容转换为Pdf

来自分类Dev

使用c#和asp.net将HTML内容转换为Pdf

来自分类Dev

通过iText和XMLWorker用波兰语字母将HTML转换为PDF

来自分类Dev

使用jsPDF和&jsPDF AutoTable将仅特定的HTML表列转换为PDF

来自分类Dev

将后记转换为pdf

来自分类Dev

将CKEDITOR转换为pdf

来自分类Dev

将图像转换为pdf

来自分类Dev

将docx转换为pdf

来自分类Dev

将JPG转换为PDF

来自分类Dev

将Webp转换为PDF

来自分类Dev

将PostScript转换为PDF

来自分类Dev

使用C#和Ghostscript将pdf转换为图像

来自分类Dev

无法使用PHP和ImageMagick将PDF转换为图像

来自分类Dev

使用pdf.js将html转换为pdf

来自分类Dev

使用pdf.js将html转换为pdf

来自分类Dev

将PSD转换为HTML和CSS

来自分类Dev

Ghostscript-将PDF转换为PDF / A

来自分类Dev

如何使用Cocoa将html文件转换为pdf

来自分类Dev

使用javascript将HTML表转换为pdf