精华内容
下载资源
问答
  • Java PDF工具类(一)| 使用 itextpdf 根据设置好的PDF模板填充PDF(文字和图片)相关文章: Java PDF工具类(二)| 使用 wkhtmltox 实现 HTML转PDF(文字/图片/页眉页脚).参考文章:...

    Java PDF工具类(一)| 使用 itextpdf 根据设置好的PDF模板填充PDF(文字和图片)

    相关文章: Java PDF工具类(二)| 使用 wkhtmltox 实现 HTML转PDF(文字/图片/页眉页脚).

    参考文章:https://www.cnblogs.com/wangpeng00700/p/8418594.html

    这里主要使用到 itextpdf 的工具包

    特点:

    一对一,点对点的给对应的地方写值,比如模板里面放了个name标识,在程序里把“张三”赋给name,那么输出的pdf里面name的地方就变成了张三,准确方便快捷

    支持中文,可以使用自己下载的字体。

    支持图片:图片的大小范围可以在模板随意调,生成出来的图片不会超过范围。而且不需要根据坐标去算,程序里面自动计算的。

    支持多页模板,即使是好几页的模板,只要每个变量对应的范围确定好了,生成出来的格式就不会错乱。

    这里我下载了一个宋体的字体文件,大家可以下载进行参考:

    链接:https://pan.baidu.com/s/13i4t7R4gHOBUeh4lGzVZYg

    提取码:s7un

    效果图:

    3951263f5857352fe34440635fd93b90.png

    一、模板准备

    1.下载编辑PDF软件(adobe_acrobat_pro),大家可自行下载,也可下载我的百度网盘中的

    链接:https://pan.baidu.com/s/1I-a2rHnI_Xrz0zK7OzWP0A

    提取码:hi71

    下载成功,解压后双击运行安装:

    3ac51d86c203e117e9b1ad74c6323eb8.png

    2.根据work模板生成对应的PDF模板文件

    1.新建一个work文档,并将其另存为为PDF格式:

    a9c9679a2436847e069dbc524f3381af.png

    cb8bb6d358f8de29d6f0d21230f246d6.png

    2.将名称为 test2 的PDF文件用第一步安装的 Adobe Acrobat Pro 打开,进行表单的编辑和变量名的填充:

    df53433190f1a9a9ed6e64065452e5f0.png

    设置文本域的变量名,后期在代码中用于替换对应的值用:

    a78b3bab588d2df6089b64f1eb8ae9b3.png

    也可以设置字体大小等,是否需要边框

    4f72244439d1f85a7824cd461acae29b.png

    设置图片,图片的地方没有文本域,在空白地方点击右键,选择文本域,然后就可以规定显示图片区域的大小了,最后的图片显示不会超出这个边框:

    d290c62e24f4896550b0b757d9dad1c2.png

    6a3b83ceb4a73e74e63eee9f93931570.png

    最后的结果,直接保存即可:

    16c075a67050ccb286d84af77b8070d3.png

    二、具体代码实现

    1.在pom文件中引入 itextpdf 依赖

    com.itextpdfgroupId>

    itextpdfartifactId>

    5.4.3version>

    dependency>

    2.在F盘下放入test2.pdf文件和一张图片

    0657a6f2b78ad6f12b036282fcbde9e1.png

    3.PDFUtils:

    import com.itextpdf.text.*;

    import com.itextpdf.text.pdf.*;

    import java.io.ByteArrayOutputStream;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.util.HashMap;

    import java.util.Map;

    /**

    * PDF生成

    */

    public class PDFUtils {

    /** 模板路径 */

    private static final String TEMPLATE_PATH = "F:\\test2.pdf";

    /** 生成的新文件路径 */

    private static final String NEW_PDF_PATH = "F:\\testOut1.pdf";

    /**

    * 利用模板生成pdf

    * @param sourceMap 数据源Map

    */

    public static void pdfout(Map sourceMap) {

    PdfReader reader;

    FileOutputStream out;

    ByteArrayOutputStream bos;

    PdfStamper stamper;

    try {

    // 设置字体

    BaseFont bf = BaseFont.createFont("D:\\bb2360\\simsun.ttf" , BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

    Font fontChinese = new Font(bf, 3, Font.NORMAL);

    out = new FileOutputStream(NEW_PDF_PATH);// 输出流

    reader = new PdfReader(TEMPLATE_PATH);// 读取pdf模板

    bos = new ByteArrayOutputStream();

    stamper = new PdfStamper(reader, bos);

    AcroFields form = stamper.getAcroFields();

    //文字类的内容处理

    Map dataMap = (Map)sourceMap.get("dataMap");

    form.addSubstitutionFont(bf);

    for(String key : dataMap.keySet()){

    String value = dataMap.get(key);

    form.setField(key,value);

    }

    //图片类的内容处理

    Map imageMap = (Map)sourceMap.get("imageMap");

    for(String key : imageMap.keySet()) {

    String imgpath = imageMap.get(key).toString();

    int pageNo = form.getFieldPositions(key).get(0).page;

    Rectangle signRect = form.getFieldPositions(key).get(0).position;

    float x = signRect.getLeft();

    float y = signRect.getBottom();

    //根据路径读取图片

    Image image = Image.getInstance(imgpath);

    //获取图片页面

    PdfContentByte under = stamper.getOverContent(pageNo);

    //图片大小自适应

    image.scaleToFit(signRect.getWidth(), signRect.getHeight());

    //添加图片

    image.setAbsolutePosition(x, y);

    under.addImage(image);

    }

    stamper.setFormFlattening(true);// 如果为false,生成的PDF文件可以编辑,如果为true,生成的PDF文件不可以编辑

    stamper.close();

    Document doc = new Document();

    Font font = new Font(bf, 32);

    PdfCopy copy = new PdfCopy(doc, out);

    doc.open();

    PdfImportedPage importPage = copy.getImportedPage(new PdfReader(bos.toByteArray()), 1);

    copy.addPage(importPage);

    doc.close();

    } catch (IOException | DocumentException e) {

    System.out.println(e);

    }

    }

    public static void main(String[] args) {

    Map map = new HashMap<>();

    map.put("name","张三");

    map.put("idcard","430159199802156596");

    Map map2 = new HashMap<>();

    map2.put("image","F:\\test2.png");

    Map o=new HashMap<>();

    o.put("dataMap",map);

    o.put("imageMap",map2);

    pdfout(o);

    }

    }

    4.结果展示:

    3951263f5857352fe34440635fd93b90.png

    至此结束,更多的功能和优化,大家可以自行补充完整!希望能对大家有用!

    相关文章: Java PDF工具类(二)| 使用 wkhtmltox 实现 HTML转PDF(文字/图片/页眉页脚).

    展开全文
  • /*** PDF工具*/public classPdfUtils {/*** 生成*@paramiouData 借据数据*@paramplanList 还款计划List*@paramaccountsList 收本金账户*@paraminterstAccountsList 收息账户*@paramorderCode*@return*/public static...

    /*** PDF工具*/

    public classPdfUtils {/*** 生成

    *@paramiouData 借据数据

    *@paramplanList 还款计划List

    *@paramaccountsList 收本金账户

    *@paraminterstAccountsList 收息账户

    *@paramorderCode

    *@return

    */

    public static String turnToPdf(LoanIouData iouData,List planList, List accountsList, ListinterstAccountsList, String orderCode){

    String basePath= PropertiesUtil.getValue("pdf.path","/application.properties");

    File file= newFile(basePath);if(!file.exists()){

    file.mkdirs();

    }

    String path= "";try{//创建文件

    Document document = newDocument();//建立一个书写器

    path = basePath+orderCode+"_还款计划表.pdf";

    PdfWriter writer= PdfWriter.getInstance(document, newFileOutputStream(path));//打开文件

    document.open();//中文字体,解决中文不能显示问题

    BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

    Font font= new Font(bfChinese);//正常字体

    Font fontBold = new Font(bfChinese, 12, Font.BOLD);//正常加粗字体

    Font fontBig = new Font(bfChinese, 20);//大字体

    Font fontBigBold = new Font(bfChinese, 20, Font.BOLD);//加粗大字体//添加主题

    Paragraph theme = new Paragraph("还款计划表", fontBigBold);

    theme.setAlignment(Element.ALIGN_CENTER);

    document.add(theme);//借款信息

    Paragraph peopleInfo = new Paragraph("借款人:"+iouData.getBorrower()+" "+"借款金额:"+iouData.getLoanAmount()+"万元", font);

    peopleInfo.setAlignment(Element.ALIGN_CENTER);

    document.add(peopleInfo);//加入空行//Paragraph blankRow = new Paragraph(18f, " ");//document.add(blankRow);//TODO Table1 还款计划 : 3列的表.-------------------------------------

    PdfPTable table1 = new PdfPTable(3);

    table1.setWidthPercentage(90); //宽度100%填充

    table1.setSpacingBefore(20f); //前间距

    table1.setSpacingAfter(20f); //后间距

    List listRow =table1.getRows();//设置列宽

    float[] columnWidths ={1f, 2f, 3f};

    table1.setWidths(columnWidths);//行1

    PdfPCell cells0[] = new PdfPCell[3];

    PdfPRow row0= newPdfPRow(cells0);//单元格

    cells0[0] = new PdfPCell(new Paragraph("期数", fontBold));//单元格内容

    cells0[0].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

    cells0[0].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

    cells0[0].setFixedHeight(25f);

    cells0[0].setBackgroundColor(BaseColor.LIGHT_GRAY);

    cells0[1] = new PdfPCell(new Paragraph("日期", fontBold));

    cells0[1].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

    cells0[1].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

    cells0[1].setBackgroundColor(BaseColor.LIGHT_GRAY);

    cells0[2] = new PdfPCell(new Paragraph("金额(元)", fontBold));

    cells0[2].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

    cells0[2].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

    cells0[2].setBackgroundColor(BaseColor.LIGHT_GRAY);

    listRow.add(row0);//插入还款内容

    for(LoanRepaymentPlan plan : planList) {

    PdfPCell cells[]= new PdfPCell[3];

    PdfPRow row= newPdfPRow(cells);

    cells[0] = new PdfPCell(newParagraph(String.valueOf(plan.getNum())));

    cells[0].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

    cells[0].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

    cells[0].setFixedHeight(25f);

    cells[1] = new PdfPCell(new Paragraph(String.valueOf(DateFormatUtils.format(plan.getRepaymentTime(), "yyyy/MM/dd"))));

    cells[1].setFixedHeight(25f);

    cells[1].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

    cells[1].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

    cells[2] = new PdfPCell(newParagraph(String.valueOf(plan.getReturnAmount())));

    cells[2].setFixedHeight(25f);

    cells[2].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

    cells[2].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中//把第单元格添加到集合(行)

    listRow.add(row);

    }//TODO Table2 账户列表 : 2列的表.------------------------------------------------------------------------

    PdfPTable table2= new PdfPTable(2);

    table2.setWidthPercentage(90); //宽度100%填充

    table2.setSpacingBefore(20f); //前间距

    table2.setSpacingAfter(20f); //后间距

    List listRow2 =table2.getRows();//设置列宽

    float[] columnWidths2 ={1f, 2f};

    table2.setWidths(columnWidths2);//TODO --第一部分

    PdfPCell cells2[] = new PdfPCell[2];

    PdfPRow row2= newPdfPRow(cells2);

    cells2[0] = new PdfPCell(new Paragraph("还息账号信息", fontBold));//单元格内容

    cells2[0].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

    cells2[0].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

    cells2[0].setFixedHeight(25f);

    cells2[0].setBackgroundColor(BaseColor.LIGHT_GRAY);

    cells2[0].setColspan(2);//合并单元格

    listRow2.add(row2);for(TransferAccount interstAccount : interstAccountsList){

    PdfPCell cells3[]= new PdfPCell[2];

    PdfPRow row3= newPdfPRow(cells3);

    cells3[0] = new PdfPCell(new Paragraph("还息账号", font));//单元格内容

    cells3[0].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

    cells3[0].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

    cells3[0].setFixedHeight(25f);

    cells3[1] = new PdfPCell(new Paragraph(interstAccount.getCertPan(), font));//单元格内容

    cells3[1].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

    cells3[1].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

    cells3[1].setFixedHeight(25f);

    listRow2.add(row3);

    PdfPCell cells4[]= new PdfPCell[2];

    PdfPRow row4= newPdfPRow(cells4);

    cells4[0] = new PdfPCell(new Paragraph("还息户名", font));//单元格内容

    cells4[0].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

    cells4[0].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

    cells4[0].setFixedHeight(25f);

    cells4[1] = new PdfPCell(new Paragraph(interstAccount.getName(), font));//单元格内容

    cells4[1].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

    cells4[1].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

    cells4[1].setFixedHeight(25f);

    listRow2.add(row4);

    PdfPCell cells5[]= new PdfPCell[2];

    PdfPRow row5= newPdfPRow(cells5);

    cells5[0] = new PdfPCell(new Paragraph("还息开户行", font));//单元格内容

    cells5[0].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

    cells5[0].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

    cells5[0].setFixedHeight(25f);

    cells5[1] = new PdfPCell(new Paragraph(interstAccount.getOpenBankName(), font));//单元格内容

    cells5[1].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

    cells5[1].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

    cells5[1].setFixedHeight(25f);

    listRow2.add(row5);

    }//TODO --第2部分

    PdfPCell cells6[] = new PdfPCell[2];

    PdfPRow row6= newPdfPRow(cells6);

    cells6[0] = new PdfPCell(new Paragraph("还本金账号信息", fontBold));//单元格内容

    cells6[0].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

    cells6[0].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

    cells6[0].setFixedHeight(25f);

    cells6[0].setBackgroundColor(BaseColor.LIGHT_GRAY);

    cells6[0].setColspan(2);//合并单元格

    listRow2.add(row6);for(TransferAccount account : accountsList){

    PdfPCell cells7[]= new PdfPCell[2];

    PdfPRow row7= newPdfPRow(cells7);

    cells7[0] = new PdfPCell(new Paragraph("还本金账号", font));//单元格内容

    cells7[0].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

    cells7[0].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

    cells7[0].setFixedHeight(25f);

    cells7[1] = new PdfPCell(new Paragraph(account.getCertPan(), font));//单元格内容

    cells7[1].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

    cells7[1].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

    cells7[1].setFixedHeight(25f);

    listRow2.add(row7);

    PdfPCell cells8[]= new PdfPCell[2];

    PdfPRow row8= newPdfPRow(cells8);

    cells8[0] = new PdfPCell(new Paragraph("还本金户名", font));//单元格内容

    cells8[0].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

    cells8[0].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

    cells8[0].setFixedHeight(25f);

    cells8[1] = new PdfPCell(new Paragraph(account.getName(), font));//单元格内容

    cells8[1].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

    cells8[1].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

    cells8[1].setFixedHeight(25f);

    listRow2.add(row8);

    PdfPCell cells9[]= new PdfPCell[2];

    PdfPRow row9= newPdfPRow(cells9);

    cells9[0] = new PdfPCell(new Paragraph("还本金开户行", font));//单元格内容

    cells9[0].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

    cells9[0].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

    cells9[0].setFixedHeight(25f);

    cells9[1] = new PdfPCell(new Paragraph(account.getOpenBankName(), font));//单元格内容

    cells9[1].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

    cells9[1].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

    cells9[1].setFixedHeight(25f);

    listRow2.add(row9);

    }//把表格添加到文件中

    document.add(table1);

    document.add(table2);//关闭文档

    document.close();//关闭书写器

    writer.close();

    }catch(Exception ex){

    ex.printStackTrace();

    }returnpath;

    }

    }

    展开全文
  • import java.awt.Color;import java.awt.Point;import java.io.ByteArrayOutputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputSt...

    import java.awt.Color;

    import java.awt.Point;

    import java.io.ByteArrayOutputStream;

    import java.io.FileNotFoundException;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.io.OutputStream;

    import java.net.MalformedURLException;

    import java.util.Date;

    import java.util.Iterator;

    import java.util.List;

    import java.util.Map;

    import javax.servlet.ServletOutputStream;

    import javax.servlet.http.HttpServletResponse;

    import org.apache.commons.logging.Log;

    import org.apache.commons.logging.LogFactory;

    import com.lowagie.text.Anchor;

    import com.lowagie.text.Annotation;

    import com.lowagie.text.BadElementException;

    import com.lowagie.text.Cell;

    import com.lowagie.text.Chapter;

    import com.lowagie.text.Chunk;

    import com.lowagie.text.Document;

    import com.lowagie.text.DocumentException;

    import com.lowagie.text.Element;

    import com.lowagie.text.Font;

    import com.lowagie.text.HeaderFooter;

    import com.lowagie.text.Image;

    import com.lowagie.text.ListItem;

    import com.lowagie.text.PageSize;

    import com.lowagie.text.Paragraph;

    import com.lowagie.text.Phrase;

    import com.lowagie.text.Rectangle;

    import com.lowagie.text.Section;

    import com.lowagie.text.Table;

    import com.lowagie.text.pdf.PdfWriter;

    public class PdfUtil {

    private static final Log log = LogFactory.getLog(PdfUtil.class);//

    日志

    public static void exportPdf(String content, String pdfPath) {

    Document document =

    null;

    OutputStream out = null;

    try {

    //

    1.建立com.lowagie.text.Document对象的实例

    document =

    new Document();

    //

    2.建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中

    out = new

    FileOutputStream(pdfPath);

    PdfWriter.getInstance(document, out);

    //

    3.打开文档

    document.open();

    //

    4.向文档中添加内容

    document.add(new Paragraph(content)); // 会中文乱码

    } catch (FileNotFoundException

    e) {

    e.printStackTrace();

    } catch (DocumentException e)

    {

    e.printStackTrace();

    } finally {

    document.close();// 5.关闭文档

    try {

    out.close();

    } catch

    (IOException e) {

    e.printStackTrace();

    }

    }

    }

    public static void exportPdf(Paragraph para, String pdfPath,

    boolean

    vertical) {

    Document doc = null;

    OutputStream out = null;

    try {

    //

    1.建立com.lowagie.text.Document对象的实例

    doc =

    buildDoc(vertical);

    //

    2.建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中

    out = new

    FileOutputStream(pdfPath);

    PdfWriter.getInstance(doc, out);

    //

    3.打开文档

    doc.open();

    //

    4.向文档中添加内容

    doc.add(para);

    } catch (Exception e) {

    e.printStackTrace();

    log.debug("生成pdf出错");

    } finally {

    close(doc,

    out);// 5.关闭

    }

    }

    public static void exportPdf(Document doc, Element element, String

    pdfPath) {

    OutputStream out = null;

    try {

    //

    2.建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中

    out = new

    FileOutputStream(pdfPath);

    PdfWriter.getInstance(doc, out);

    //

    3.打开文档

    doc.open();

    //

    4.向文档中添加内容

    doc.add(element);

    } catch (Exception e) {

    e.printStackTrace();

    log.debug("生成pdf出错");

    } finally {

    close(doc,

    out);// 5.关闭

    }

    }

    public static void exprotPdf(Document doc, PdfBean pdfBean) {

    OutputStream out = null;

    try {

    //

    2.建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中

    out = new

    FileOutputStream(pdfBean.getFileName());

    PdfWriter

    writer = gerPdfWriter(doc, out);

    doc =

    setPdfProperty(doc, pdfBean); // 设置属性

    //

    加密处理

    if

    (pdfBean.isEncryptFlag()) {

    List permissionList = pdfBean.getPermissionList();

    if (permissionList != null &&

    permissionList.size() > 0) {

    int allPermission = 0;

    for (Iterator it = permissionList.iterator(); it.hasNext();)

    {

    int permission = (Integer) it.next();

    allPermission = allPermission | permission; // 有或运算来累加权限

    }

    writer = encrypt(writer, pdfBean.getUserPsw(), pdfBean

    .getOwnerPsw(), allPermission);

    }

    }

    //

    3.打开文档

    doc.open();

    //

    4.向文档中添加内容

    List

    elementList = pdfBean.getElementList();

    if(elementList != null &&

    !elementList.isEmpty()){

    for(Iterator it = elementList.iterator(); it.hasNext();){

    Element element = (Element) it.next();

    doc.add(element);

    }

    }

    } catch (Exception e) {

    e.printStackTrace();

    log.debug("生成pdf出错");

    } finally {

    close(doc,

    out);// 5.关闭

    }

    }

    public static void exprotPdfToUrl(Document doc, PdfBean pdfBean,

    HttpServletResponse response) {

    ByteArrayOutputStream bao =

    null;

    ServletOutputStream out =

    null;

    try {

    //

    2.建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中

    bao = new

    ByteArrayOutputStream();

    PdfWriter

    writer = gerPdfWriter(doc, bao);

    doc =

    setPdfProperty(doc, pdfBean); // 设置属性

    //

    加密处理

    if

    (pdfBean.isEncryptFlag()) {

    List permissionList = pdfBean.getPermissionList();

    if (permissionList != null &&

    permissionList.size() > 0) {

    int allPermission = 0;

    for (Iterator it = permissionList.iterator(); it.hasNext();)

    {

    int permission = (Integer) it.next();

    allPermission = allPermission | permission; // 有或运算来累加权限

    }

    writer = encrypt(writer, pdfBean.getUserPsw(), pdfBean

    .getOwnerPsw(), allPermission);

    }

    }

    //

    3.打开文档

    doc.open();

    //

    4.向文档中添加内容

    List

    elementList = pdfBean.getElementList();

    if(elementList != null &&

    !elementList.isEmpty()){

    for(Iterator it = elementList.iterator(); it.hasNext();){

    Element element = (Element) it.next();

    doc.add(element);

    }

    }

    doc.close();

    //关闭document

    //response设置

    response.setContentType("application/pdf");

    // response.setHeader("Content-Disposition",

    "attachment;filename=\"temp.pdf\""); // response.setHeader("Cache-Control", "must-revalidate, post-check=0,

    pre-check=0"); // response.setHeader("Pragma",

    "public"); // response.setDateHeader("Expires", (System.currentTimeMillis() +

    1000)); response.setContentLength(bao.size());

    out =

    response.getOutputStream();

    bao.writeTo(out);

    out.flush(); } catch (Exception e) {

    e.printStackTrace();

    log.debug("页面输出pdf出错");

    } finally {

    try {

    bao.close();

    out.close();

    } catch

    (IOException e) {

    e.printStackTrace();

    展开全文
  • import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import javax.servlet.http.HttpServletRequest;import com.aspose.words.Document;import com.aspose.words.License;import ...

    import java.io.File;

    import java.io.FileOutputStream;

    import java.io.InputStream;

    import javax.servlet.http.HttpServletRequest;

    import com.aspose.words.Document;

    import com.aspose.words.License;

    import com.aspose.words.SaveFormat;

    public class PdfUtil {

    /**

    * WORD 转 PDF

    *

    * @param filepath

    */

    public void wordOfPdf(String filepath,HttpServletRequest request) {

    boolean result = false;

    try {

    InputStream license = PdfUtil.class.getClassLoader().getResourceAsStream("license.xml");

    License aposeLic = new License();

    aposeLic.setLicense(license);

    //aposeLic.setLicense(PdfUtil.class.getClassLoader().getResourceAsStream("license.xml"));//license文件路径

    result = true;

    if (result == true) {

    Document doc = new Document( request.getSession().getServletContext()

    .getRealPath("\\" +filepath));//原始word路径

    String fles = filepath.substring(0, filepath.lastIndexOf("."));

    File file = new File(request.getSession().getServletContext()

    .getRealPath("\\" +fles+".pdf"));// 输出路径

    FileOutputStream fileOS = new FileOutputStream(file);

    doc.save(fileOS, SaveFormat.PDF);

    fileOS.close();

    }

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    }

    使用方法:

    PdfUtil word = new PdfUtil();

    word.wordOfPdf(filePaths, request);//filePaths为存储位置

    展开全文
  • 标签:package ...import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import javax.servlet.http.HttpServletRequest;import com.aspose.cells...
  • Java PDF工具类(一)itextpdf | 根据设置好的PDF模板填充PDF(文字和图片) 这里主要使用到 itextpdf 的工具包 特点: 一对一,点对点的给对应的地方写值,比如模板里面放了个name标识,在程序里把“张三”赋给...
  • 相关文章: Java PDF工具类(一)itextpdf | 根据设置好的PDF模板填充PDF(文字和图片). 这里使用的是wkhtmltopdf工具,可用于THML转图片或PDF。 wkhtmltopdf官方网站下载地址:...
  • Java PDF工具类(三)| 使用 wkhtmltox 在 Liunx 上出现的问题 部署到liunx服务器上出现的问题: 1.报错: html转pdf进度和信息:/usr/local/bin/wkhtmltopdf: /lib64/libcrypto.so.10: version `OPENSSL_1.0.2’ ...
  • itext java 导出pdf工具

    2011-07-08 10:04:58
    itext java 导出pdf工具 itext java 导出pdf工具 itext java 导出pdf工具
  • Java生成PDF工具

    2018-12-25 15:26:21
    这个Java生成PDF工具包,是经过我修改源码而成的,可以支持中文边界自动换行,连续的英文字母、数字、符号,也可以自动换行
  • java生成PDF工具代码

    2018-11-20 13:49:28
    以itext为基础,完美解决了java制作PDF是中文不可换行问题。
  • Java 生成PDF工具类 itext-2.1.7,是免费最后一个版本,再之后的版本就收费了,Java生产PDF里一般都是用itext,接口方便易懂
  • java生成pdf工具

    2016-06-21 13:47:55
    java利用itext类库生成pdf,分页输出并添加水印
  • java测试工具html转pdf

    2017-08-30 15:20:25
    java测试工具html转pdf
  • java pdf导出报表工具类 一、描述        pdf导出报表工具,需要的jar包:itextpdf-5.1.2.jar 和 itext-asian-5.1.1.jar(解决中文乱码),需要转成pdf模板工具:Adobe Acrobat...
  • java制作pdf模板工具
  • 在项目中需要使用到在线浏览文件功能,由于项目中只能上传pdf和图片文件,所有就只做了预览pdf和图片的功能。在页面中的代码如下:查看path:是文件存放在服务器上的位置type:是文件的类型js中也就只有一个打开新...
  • java html转pdf工具

    2016-12-15 10:43:55
    html转pdf工具类,可以直接将html转换成pdf
  • java pdf iText jar 源代码 java解析 pdf工具包 iText jar包源代码
  • itextpdf-5.4.3.jar 使用java生成pdf文档需要使用该jar包
  • java解析pdf工具bfopdf-2.11.11.zip java 解析 pdf jar
  • Java aspose Excel转为 pdf工具类 拿来马上用 cv操作,有注释简单总结版 其他人的收费 写的一般。我搜索老半天才找到,记录之

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,673
精华内容 1,469
关键字:

javapdf工具

java 订阅