从数据库读取流来合并pdf

public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub


PDFMergerUtility mergePdf = new PDFMergerUtility();
// ----------------------------------------


// PdfReader reader = new PdfReader("E:\\A.pdf");


// PdfContentByte overContent = stamper.getOverContent(1);


// ------------------------------------
char encoding = '1';


List<String> stlist = new ArrayList<String>();
// stlist.add("GGML");
stlist.add("TMZCSQ");


// ***********-----------------------------------
JDBCUtil tUtil = new JDBCUtil();
// 查询公告类型(参数公告类型)
String annTypeSql = "select h.ann_type_code from tmu_tmedms.t_tmedms_tm_ann_search h where h.ann_num=? group by h.ann_type_code";
List<String> typeList = new ArrayList<String>();
ResultSet queryType = tUtil
.doQuery(annTypeSql, new Object[] { "1526" });
while (queryType.next()) {
typeList.add(queryType.getString(1));
}
tUtil.close(queryType);
System.out.println("公告类型数量:" + typeList.size());
for (int i = 0; i < typeList.size(); i++) {
if (!typeList.get(i).equals("TMZCSQ")) {
stlist.add(typeList.get(i));
}
}
// ---------------------------------


// 查询所有公告内容--------------------


String sql = "select * from (select f.content from tmu_tmedms.t_tmedms_tm_anno_files f where f.doc_id in"
+ " (select t.id from tmu_tmedms.t_tmedms_tm_ann_info t where t.ann_num='1526' and t.ann_type_code= ?) order by f.doc_no) where rownum<101 ";
// 查询单个公告内容-------------------
String oneSql = "select a.content from (select rownum as rn, t.* from (select * from tmu_tmedms.t_tmedms_tm_anno_files f "
+ " where f.doc_id in (select t.id from tmu_tmedms.t_tmedms_tm_ann_info t where t.ann_num = '1526'"
+ " and t.ann_type_code =?) order by f.doc_no) t) a where rn =? and a.doc_type_code='ANNO'";
// 查询该类型公告总数量
String countSql = "select max(h.page_num) from tmu_tmedms.t_tmedms_tm_ann_info h where h.ann_type_code=? and h.ann_num='1526'";
// 查询杂文公告注册号-----------------------
/*
* String
* regNumSql="select h.reg_num from tmu_tmedms.t_tmedms_tm_ann_search h,"
* +
* "(select t.ann_num, t.ann_type_code from tmu_tmedms.t_tmedms_tm_anno_files f,"
* +
* " tmu_tmedms.t_tmedms_tm_ann_info t where f.doc_id = t.id and t.ann_num = '1526'"
* +" and f.doc_no = ? and t.ann_type_code = ? order by f.doc_no) g"+
* " where h.ann_num = g.ann_num  and h.ann_type_code = g.ann_type_code and h.page_no = ? "
* ;
*/
// Long state= System.currentTimeMillis();
Date d = new Date();
System.out.println(d);


Document document = null;
document = new Document(com.itextpdf.text.PageSize.A4, 50, 50, 50, 50);
File f = new File("d:\\g.pdf");
//FileReader fileReader = new FileReader("d:\\g.pdf");
// document = new Document(new PdfReader(files[0]).getPageSize(1));


PdfCopy copy = new PdfCopy(document, new FileOutputStream(f, true));
// FileOutputStream outputStream = new
// FileOutputStream("d:\\g.pdf",true);


document.open();
Date d2 = new Date();
System.out.println("开始:" + d2);
int n = 0;
int k = 0;
List<byte[]> list1 = new ArrayList<byte[]>();
for (int i = 0; i < stlist.size(); i++) {
// 计算该类型公告总数量
int countAnno = 0;
ResultSet count = tUtil.doQuery(countSql, new Object[] { stlist
.get(i) });
if (count.next()) {
countAnno = count.getInt(1);
}
tUtil.close(count);

 if(i>3){
 break;
 }
// 加入小节内容
for (int j = 1; j <= countAnno; j++) {
if(j>220){
break; 
     }
 
byte[] content1 = null;
ResultSet queryAnno = tUtil.doQuery(oneSql, new Object[] {
stlist.get(i), j });
if (queryAnno.next()) {
content1 = queryAnno.getBytes(1);
}
tUtil.close(queryAnno);
// System.out.println(stlist.get(i)+":第"+j+"个");


InputStream is = new ByteInputStream(content1, 0,
content1.length);


try {
PdfReader reader = new PdfReader(is);
document.newPage();
PdfImportedPage page = copy.getImportedPage(reader, 1);
// PdfWriter writer = page.getPdfWriter();
// PdfContentByte cb =writer.getDirectContent();
// cb.addTemplate(page, 0, 0);
copy.addPage(page);
// PdfCopyFields pdfCpyF = new PdfCopyFields(new
// FileOutputStream("d:\\公告2016-11-28.pdf",true));
// pdfCpyF.addDocument(reader,"2");
is.close();
// pdfCpyF.


} catch (Exception e) {
e.printStackTrace();
} finally {
Date d1 = new Date();
System.out.println(d1);
n++;
k++;
System.out.println("总数:" + n);
}
/*
* File f=new File("D:/pdf/test"+stlist.get(i)+j+".pdf");
* FileOutputStream fos=new FileOutputStream(f);
* fos.write(content1); fos.flush(); fos.close();
*/
/*
* InputStream is=new
* ByteInputStream(content1,0,content1.length); PdfReader reader
* = new PdfReader(is); PdfStamper stamper = new
* PdfStamper(reader, new
* FileOutputStream("d:\\B.pdf",true),encoding,true);
* PdfContentByte overContent = stamper.getOverContent(1);
* overContent.add(overContent); stamper.close();
*/
// OutputStream output = new OutputStreamWriter(new
// FileOutputStream("D:/merged2.txt",true),encoding);


}


// --------------------------------


// InputStream is=new ByteInputStream();
// mergePdf.addSources(sourcesList)
// String folder = "D:/pdf";
// String destinationFileName = "cqs.pdf";
/*
* String newName=null; for (int i = 0; i <3; i++) { String
* filePath=folder + File.separator+getFiles(folder)[i];
* newName=getFiles(folder)[1].toString();
* mergePdf.addSource(filePath); File f=new File(filePath);
* System.out.println("文件名:"+f.getName()); f.deleteOnExit();

* }
*/


// String[] filesInFolder = getFiles(folder);
/*
* for(int i = 0; i < getFiles(folder).length; i++){

* mergePdf.addSource(folder + File.separator +
* getFiles(folder)[i]);

* }
*/
// System.out.println(newName);
/*
* mergePdf.setDestinationFileName(folder + File.separator +
* destinationFileName); mergePdf.mergeDocuments(); mergePdf.get
*/
/*
* Date d1=new Date(); System.out.println(d1); Long end=
* System.currentTimeMillis(); //
* System.out.println((end-state)/1000+"秒");
*/
}


document.close();
System.out.print("done");
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值