JAVA生成PDF文件

dyh1987214 2010-01-20 06:37:36
JAVA中生成PDF文件,大小设置的是A4,使用A4纸打印会出现打印不到边缘的情况,就是PDF的边缘到A4值边缘还有0.3厘米的样子
...全文
931 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
OsbornHuo 2010-11-11
  • 打赏
  • 举报
回复
POI是用来生成EXCEL的[Quote=引用 2 楼 tangwei070 的回复:]

据说POI 可以搞定
[/Quote]
OsbornHuo 2010-11-11
  • 打赏
  • 举报
回复
POI是用来生成EXCEL的[Quote=引用 1 楼 ymdcr 的回复:]

从来没弄过
学习学习
[/Quote]
dyh1987214 2010-01-22
  • 打赏
  • 举报
回复
public PrintPDF(HttpServletResponse response, boolean flag) {
Rectangle rectPageSize = new Rectangle(PageSize.A4);// 定义A4页面大小
if (true == flag) {
rectPageSize = rectPageSize.rotate();// 加上这句可以实现A4页面的横置
}
// step a: creation of a document-object
document = new Document(rectPageSize, 0,0, 0, 0);// 4个参数,设置了页面的4个边距
try {
response.setContentType(CONTENT_TYPE);
// PdfWriter.getInstance(document, response.getOutputStream());
PdfWriter writer = PdfWriter.getInstance(document, response
.getOutputStream());
writer.setPageEvent(this);
// HeaderFooter footer = getHeaderFooter();
// document.setFooter(footer);
document.open();
} catch (DocumentException e) {

e.printStackTrace();
} catch (IOException e) {

e.printStackTrace();
}
}




private void createTest(List<List<List<Cell>>> list) throws MalformedURLException, IOException {
try {
Document document = print.getDocument();
Image img = Image.getInstance("E:\\maishang1.jpg");//设置背景
img.scaleAbsolute(595,842); // set image size
img.setAbsolutePosition(0, 0);
img.setAlignment(Image.UNDERLYING);
document.add(img);
for (int index = 0; index < list.size(); index++) {
PdfPTable table = getTables(list.get(index));
document.add(table);
document.newPage();
}
} catch (DocumentException e) {

e.printStackTrace();
}
}

给PDF设置了背景,但是打印出来,背景都是打印不到边的,距离页面边距还是有距离 很让人崩溃啊
ChDw 2010-01-22
  • 打赏
  • 举报
回复
Rectangle rectPageSize = new Rectangle(PageSize.B4);// 定义A4页面大小

你自己代码明明写B4啊。
另外我测试打印是没有问题的,除非你在PDF的窗口中自己再设置了。
但是你要注意,如果是文本的话由于换行时需要考虑下一行第一个单词的宽度问题,所以可能会在右边根据下一行第一个单词的宽度有不定的边距。
ChDw 2010-01-22
  • 打赏
  • 举报
回复
我的很正常,不过你声明的图片大小其实是比页面小的

Rectangle rectPageSize = new Rectangle(PageSize.A4);// 定义A4页面大小 
Document document = new Document(rectPageSize, 0,0, 0, 0);// 4个参数,设置了页面的4个边距
try {
FileOutputStream fis = new FileOutputStream("C:/1.pdf");
PdfWriter writer = PdfWriter.getInstance(document, fis);
document.open();
document.newPage();
Image img = Image.getInstance("C:/Windows/Zapotec.bmp");
img.scaleAbsolute(document.getPageSize().getWidth(), document.getPageSize().getHeight()); // set image size
img.setAbsolutePosition(0, 0);
img.setAlignment(Image.UNDERLYING);
document.add(img);


document.close();
writer.close();
fis.close();
} catch (DocumentException e) {

e.printStackTrace();
} catch (IOException e) {

e.printStackTrace();
}
heroshen1988 2010-01-21
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 fengzhishang55 的回复:]
myeclips中有自带的控件可以生成.pdf
[/Quote]
什么控件啊?
ChDw 2010-01-21
  • 打赏
  • 举报
回复
使用A4纸打印会出现打印不到边缘的情况,就是PDF的边缘到A4值边缘还有0.3厘米的样子
---

默认打印都会有边距啊。这个不是很正常吗?你可以代码中设置页面边距啊。
dyh1987214 2010-01-21
  • 打赏
  • 举报
回复
生成的PDF看起来没什么问题 主要是已打印到纸上就会出现打印不到纸张边缘的问题
fengzhishang55 2010-01-21
  • 打赏
  • 举报
回复
myeclips中有自带的控件可以生成.pdf
zishanyan 2010-01-21
  • 打赏
  • 举报
回复
mark
cbdhxka 2010-01-21
  • 打赏
  • 举报
回复
http://pdfbox.apache.org/

pdfbox,可以做这个

http://www.apache.org/dyn/closer.cgi/lucene/java/这个apache的相关技术网站,右边有很多相关技术,都很好用的。

privateWitkey 2010-01-21
  • 打赏
  • 举报
回复
我也跟着学学
sunxmail 2010-01-21
  • 打赏
  • 举报
回复
一点一点比,用一个常量作为比例
呼吸先生 2010-01-21
  • 打赏
  • 举报
回复
是不是生成的PDF就有这种差距呢?
水中影子 2010-01-21
  • 打赏
  • 举报
回复
什么控件?说下名字呗!
我也需要
dyh1987214 2010-01-21
  • 打赏
  • 举报
回复
楼上的们可以说的具体点吗 感谢了啊 这个问题困扰好久了
dyh1987214 2010-01-21
  • 打赏
  • 举报
回复
public PrintPDF(HttpServletResponse response, boolean flag,String name) {
Rectangle rectPageSize = new Rectangle(PageSize.B4);// 定义A4页面大小
if (true == flag) {
rectPageSize = rectPageSize.rotate();// 加上这句可以实现A4页面的横置
}
// step a: creation of a document-object
document = new Document(rectPageSize, 0,0, 0, 0);// 4个参数,设置了页面的4个边距
try {
response.setContentType(CONTENT_TYPE);
// PdfWriter.getInstance(document, response.getOutputStream());
PdfWriter writer = PdfWriter.getInstance(document, response
.getOutputStream());
writer.setPageEvent(this);
// HeaderFooter footer = getHeaderFooter();
// document.setFooter(footer);
document.open();
} catch (DocumentException e) {

e.printStackTrace();
} catch (IOException e) {

e.printStackTrace();
}
}


边距都设为零了 打印出来还是有边距
jypapgl 2010-01-20
  • 打赏
  • 举报
回复
控件时最简单的解决办法了
gaochaoyude 2010-01-20
  • 打赏
  • 举报
回复
用控件可以吗 ?
我这里有一个
tangwei070 2010-01-20
  • 打赏
  • 举报
回复
据说POI 可以搞定
加载更多回复(1)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧