java 其他文件转pdf_java 其他文件转成pdf java生成pdf

该博客介绍了如何使用Java库PD4ML将其他文件或网页转换为PDF。通过示例代码展示了如何设置页面边距、宽度、字体等参数,并提供了从URL读取内容并生成PDF的方法。
摘要由CSDN通过智能技术生成

java生成pdf需要用到的包pd4ml.jar

下载地址:http://download.csdn.net/detail/yanning1314/7124741

package com.cular.util;

import java.awt.Dimension;

import java.awt.Insets;

import java.io.ByteArrayOutputStream;

import java.io.File;

import java.io.FileOutputStream;

import java.io.InputStreamReader;

import java.net.URL;

import org.apache.http.HttpResponse;

import org.apache.http.client.HttpClient;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.DefaultHttpClient;

import org.zefer.pd4ml.PD4ML;

import org.zefer.pd4ml.PD4PageMark;

public class PDFConverter {

//public byte[] generatePDF(InputStreamReader isr, String pdfFilename, String baseurl){

FileOutputStream fos = null;

//byte[] res = null;

//ByteArrayOutputStream baos = null;

//try{

fos = new FileOutputStream(new File(pdfFilename));

//baos = new ByteArrayOutputStream();

//PD4ML pd4ml = new PD4ML();

//pd4ml.setPageInsets(new Insets(10, 10, 10, 10));

//pd4ml.setHtmlWidth(1000);

//pd4ml.enableImgSplit(false);

Dimension format = PD4ML.A4;

pd4ml.setPageSize(pd4ml.changePageOrientation(format)); // landscape page orientation

//pd4ml.useTTF("java:fonts", true );

pd4ml.enableDebugInfo();

//

footer if needed

PD4PageMark footer = new PD4PageMark();

footer.setPageNumberTemplate("page $[page] of $[total]");

footer.setPageNumberAlignment(PD4PageMark.RIGHT_ALIGN);

footer.setInitialPageNumber(1);

footer.setPagesToSkip(1);

footer.setFontSize(10);

footer.setAreaHeight(18);

pd4ml.setPageFooter(footer);

//

//

//pd4ml.render(isr, baos, new URL(baseurl));

//

//res = baos.toByteArray();

//}catch(Exception e){

//e.printStackTrace();

try{fos.close();fos=null;}catch(Exception ee){}

fos=null;

//try{baos.close();baos=null;}catch(Exception ee){}

//baos=null;

//}finally{

try{fos.close();fos=null;}catch(Exception ee){}

//try{baos.close();baos=null;}catch(Exception ee){}

//}

//

//return res;

//}

public static void main(String[] args) {

PDFConverter pdf = new PDFConverter();

pdf.processFile("d://123/", "123.pdf", "http://localhost:8080/CULAR/", "test.jsp");

}

/**

*

* @param folder 生成pdf后放在哪个目录

* @param filename pdf的名称

* @param baseurl 要生成pdf的url

* @param jspString 要把哪个生成pdf

* @return

*/

public boolean processFile(String folder, String filename,String baseurl,String jspString){

boolean res = false;

InputStreamReader isr = null;

try{

File f = new File(folder);

if (f.isDirectory()) {

f.mkdir();

}

String fullfilename = folder + filename;

HttpClient client = new DefaultHttpClient();

HttpGet h_request = new HttpGet(baseurl + jspString);

HttpResponse h_response = client.execute(h_request);

isr = new InputStreamReader(h_response.getEntity().getContent(), "UTF-8");

PDFConverter converter = new PDFConverter();

//String localpath = getServletContext().getInitParameter("pdfDir") + admin.getUserid() + "/" + lessonid + ".pdf";

//String downloadUrl = getServletContext().getInitParameter("pdfUrl") + admin.getUserid() + "/" + lessonid + ".pdf";

res = converter.generatePDF(isr, fullfilename, baseurl);

}catch(Exception e){

e.printStackTrace();

}finally{

try{isr.close();isr=null;}catch(Exception e){}

}

return res;

}

/**

* 生成pdf

* @param isr

* @param pdfFilename

* @param baseurl

* @return

*/

public boolean generatePDF(InputStreamReader isr, String pdfFilename, String baseurl){

FileOutputStream fos = null;

boolean res = false;

try{

fos = new FileOutputStream(new File(pdfFilename));

PD4ML pd4ml = new PD4ML();

pd4ml.setPageInsets(new Insets(10, 10, 10, 10));

pd4ml.setHtmlWidth(1000);

pd4ml.enableImgSplit(false);

//Dimension format = PD4ML.A4;

//pd4ml.setPageSize(pd4ml.changePageOrientation(format)); // landscape page orientation

pd4ml.useTTF("java:fonts", true );

//pd4ml.enableDebugInfo();

// footer if needed

//PD4PageMark footer = new PD4PageMark();

//footer.setPageNumberTemplate("page $[page] of $[total]");

//footer.setPageNumberAlignment(PD4PageMark.RIGHT_ALIGN);

//footer.setInitialPageNumber(1);

//footer.setPagesToSkip(1);

//footer.setFontSize(10);

//footer.setAreaHeight(18);

//pd4ml.setPageFooter(footer);

pd4ml.render(isr, fos, new URL(baseurl));

res = true;

//res = baos.toByteArray();

}catch(Exception e){

e.printStackTrace();

}finally{

try{fos.close();fos=null;}catch(Exception ee){}

}

return res;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值