java生成pdf并下载

先在项目中导入MAVEN依赖

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13</version>
</dependency>

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itext-asian</artifactId>
    <version>5.2.0</version>
</dependency>

在控制层加入以下方法即可

public void download(HttpServletResponse response, HttpServletRequest request) throws Exception{
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        /* 解决中文无法显示:使用iTextAsian.jar包中的字体 */
        BaseFont baseFont = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
        Font font_normal = new Font(baseFont, 18, Font.NORMAL);
        Font font_normal2 = new Font(baseFont, 14, Font.NORMAL);
        Font font_bold = new Font(baseFont, 12, Font.BOLD);
        /*时间*/
        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy日MM月dd日");
        String format = simpleDateFormat.format(date);
        /* 第一步 创建文档实例 自定义页面大小使用 */
        com.itextpdf.text.Document document = new com.itextpdf.text.Document(PageSize.A4);
        /* 第二步 获取PdfWriter实例 */
        PdfWriter writer = PdfWriter.getInstance(document, baos);
        //PdfWriter.getInstance(document, baos);
        document.setMargins(64, 64, 36, 36);
        /* 第三步 打开文档 */
        document.open();
        /* 第四步 添加段落内容 */
        Paragraph paragraph = new Paragraph("你想写的标题\n" + "", new Font(baseFont, 25, Font.BOLD));
        paragraph.setAlignment(Element.ALIGN_CENTER);
        paragraph.setSpacingAfter(10);
        document.add(paragraph);
        paragraph = new Paragraph("          兹证明_XXX_(身份证号码 XXXXX)系我司员工,其工号_XXXX_,所属单位_XXXX_,特此证明,用于申请优惠购车。", font_normal);
        document.add(paragraph);
        paragraph = new Paragraph(" \n"+"          有效期1个月", font_normal2);
        document.add(paragraph);
        String kg = "                                                                                       ";
        paragraph = new Paragraph(" \n"+kg +"XXXX有限公司工会委员会", font_normal2);
        document.add(paragraph);
        paragraph = new Paragraph(kg +"下载日期:"+format, font_normal2);
        document.add(paragraph);

        //创建一个image对象.  
        Image image = Image.getInstance("你想导入的图片路径");     //图片
        //设置image对象的输出位置pa.getAsNumber(pa.size()-1).floatValue() 是该页pdf坐标轴的y轴的最大值  
        image.setAbsolutePosition(400, 430);//图片的X轴和Y轴
        image.scaleAbsolute(120,120);//图片大小
        document.add(image);
        OutputStream out = null;
        try {
            float pageWidth = document.right()+document.left();//获取pdf内容正文页面宽度
            float pageHeight = document.top()+document.bottom();//获取pdf内容正文页面高度
            //设置水印字体格式
            BaseFont base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
            Font waterMarkFont = new Font(base, 15, Font.BOLD, BaseColor.LIGHT_GRAY);
            PdfContentByte waterMarkPdfContent = writer.getDirectContentUnder();
            Phrase phrase = new Phrase("我是水印", waterMarkFont);
            //5行6列
            for (double i=0;i<1;i+=0.2){
                float f = (float) (0.1+i);
                for (double j=0;j<1d;j+=0.15){
                    float h = (float) (0.2+j);
                    ColumnText.showTextAligned(waterMarkPdfContent,Element.ALIGN_CENTER,phrase,
                            pageWidth*f,pageHeight*h,45);
                }
            }
            /*//两行三列
            ColumnText.showTextAligned(waterMarkPdfContent,Element.ALIGN_CENTER,phrase,
                    pageWidth*0.25f,pageHeight*0.2f,45);
            ColumnText.showTextAligned(waterMarkPdfContent,Element.ALIGN_CENTER,phrase,
                    pageWidth*0.25f,pageHeight*0.5f,45);
            ColumnText.showTextAligned(waterMarkPdfContent, Element.ALIGN_CENTER,phrase,
                    pageWidth*0.25f,pageHeight*0.8f,45);
            ColumnText.showTextAligned(waterMarkPdfContent,Element.ALIGN_CENTER,phrase,
                    pageWidth*0.65f,pageHeight*0.2f,45);
            ColumnText.showTextAligned(waterMarkPdfContent,Element.ALIGN_CENTER,phrase,
                    pageWidth*0.65f,pageHeight*0.5f,45);
            ColumnText.showTextAligned(waterMarkPdfContent,Element.ALIGN_CENTER,phrase,
                    pageWidth*0.65f,pageHeight*0.8f,45);*/

            document.close();

            //设置请求返回类型
            response.setHeader("Content-Disposition", "attachment; filename=" + new String("我是你想要的.pdf".getBytes(), StandardCharsets.ISO_8859_1));
            response.setContentLength(baos.size());
            out = response.getOutputStream();
            baos.writeTo(out);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            out.flush();
            out.close();
        }
}

以上就是JAVA生成PDF的方法
转载于:https://blog.csdn.net/weixin_48506585/article/details/107244063

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是Java生成PDF报表并下载的示例代码: ```java import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.PdfWriter; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; @Controller @RequestMapping("/pdf") public class PdfController { @RequestMapping(value = "/download", method = RequestMethod.GET) @ResponseBody public void download(HttpServletResponse response) throws IOException, DocumentException { // 设置文件名和文件类型 response.setHeader("Content-Disposition", "attachment;filename=test.pdf"); response.setContentType("application/pdf"); // 创建PDF文档对象 Document document = new Document(); OutputStream out = response.getOutputStream(); PdfWriter.getInstance(document, out); // 打开文档 document.open(); // 添加段落 document.add(new Paragraph("Hello World!")); // 关闭文档 document.close(); out.flush(); out.close(); } } ``` 以上代码使用了iText库来生成PDF文档,首先设置了文件名和文件类型,然后创建了PDF文档对象并打开文档,添加了一个段落,最后关闭文档并将其写入输出流中,实现了PDF报表的生成下载

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值