为什么使用itext生成的PDF文件只显示一页?

工具用的:Adobe Acrobat Pro、idea、
查看生成的pdf文件工具是以下三个:2345看图王、WPS、谷歌浏览器

itext版本:5.4.3

 <dependencies>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.4.3</version>
        </dependency>
    </dependencies>

下面是代码和截图

import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;
/**
 * Created by wangpeng on 2018/02/01.
 */
public class pdf1 {
    // 利用模板生成pdf  
    public static void pdfout(Map<String,Object> o) {
        // 模板路径  
        String templatePath = "C:\\Users\\fu\\Desktop\\PDF\\运输合同.pdf";
        // 生成的新文件路径  
        String newPDFPath = "E:\\xzd\\src\\main\\resources\\pdf\\ht.pdf";

        PdfReader reader;
        FileOutputStream out;
        ByteArrayOutputStream bos;
        PdfStamper stamper;
        try {
            BaseFont bf = BaseFont.createFont("C:/Users/fu/Downloads/simsunttc/simsun.ttc,1",BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
            Font FontChinese = new Font(bf, 5, Font.NORMAL);
            out = new FileOutputStream(newPDFPath);// 输出流
            reader = new PdfReader(templatePath);// 读取pdf模板  
            bos = new ByteArrayOutputStream();
            stamper = new PdfStamper(reader, bos);
            AcroFields form = stamper.getAcroFields();
            //文字类的内容处理
            Map<String,String> datemap = (Map<String,String>)o.get("datemap");
            form.addSubstitutionFont(bf);
            for(String key : datemap.keySet()){
                String value = datemap.get(key);
                form.setField(key,value);
            }
            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();
            System.err.println("生成pdf合同完成~~~~~~~~~~");
        } catch (IOException e) {
            System.out.println(e);
        } catch (DocumentException e) {
            System.out.println(e);
        }


    }

    public static void main(String[] args) {
        Map<String,String> map = new HashMap();
        map.put("contractNo","HT18858585858558");///添加合同编号
        //添加公司名称
        map.put("firstParty","李四四");//甲
        //乙方公司名称
        map.put("secondParty","张三三");//乙
       //运费
        map.put("contracttotal","750.00");
        //结算方式
        map.put("isOnlinePay","现金");
        //结算周期
        map.put("settlementperiod","3");
        //参数列表
        map.put("yunshushixiao","30");
        map.put("lifang","3");
        map.put("dun","10");
        map.put("gongli","100");
        map.put("youxiaoqi","3");
        map.put("jiafangAddress","邯郸");
        map.put("yifangAddress","石家庄");
        map.put("jiafangPhone","123456");
        map.put("yifangPhone","654321");
        map.put("jiafangBake","1111111111111");
        map.put("yifangBake","3333333333333");

        Map<String,Object> o=new HashMap();
        o.put("datemap",map);
        pdfout(o);
    }
}

刚开始好像没啥问题,但是过了几天不知道发生了什么,突然就只能显示一页了。就是生成的pdf文件,用什么工具打开都是只显示一页。

这个是模板,有6页

这个是新生成的PDF文件,只有一页。

请大神赐教!

pdf

2个回答

Adobe Acrobat Pro工具那个截图是模板
2345看图王哪个是新生成的PDF文件

CSDN__FL
编程路上的蚂蚁 回复caozhy: 是重装系统?还是重装2345看图王?我在没有安装2345看图王之前,用WPS查看PDF文件就有只显示一页的情况,刚开始没有,不知道怎么回事儿。突然就这样了,把文件发给别人,查看也是只显示一页。
接近 2 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 电脑感染了2345系列流氓软件,重装吧。
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问