大侠救救我吧!!!送分啦!!!!

jybankwf 2004-08-10 09:46:44
我用JAVA地Printable设计打印报表时发现打印在报表上的两个数字或两个空格
的长度要略大于一个汉字的长度,这样导致报表不对齐,怎样解决??????????
和字体设置有关系吗????????????


private void drawCurrentPageText(Graphics2D g2, PageFormat pf, int page)
{
//Font f = area.getFont();

Font f = new Font("Dialog",0,12);

//Font f = new Font("Serif",0,12);

String s = getDrawText(printStr)[page];
String drawText;
float ascent = 16;
int k, i = f.getSize(), lines = 0;
while(s.length() > 0 && lines < 54)
{
k = s.indexOf('\n');
if (k != -1)
{
lines += 1;
drawText = s.substring(0, k);
g2.drawString(drawText, 0, ascent);
if (s.substring(k + 1).length() > 0)
{
//area.append("\nascent="+ascent+"i="+i);
s = s.substring(k + 1);
ascent += i;

}
}
else
{
lines += 1;
drawText = s;
g2.drawString(drawText, 0, ascent);
s = "";
}
}
}
...全文
108 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Frank1982 2004-08-10
  • 打赏
  • 举报
回复
如果要考虑跨平台性的话可能只能使用java自己的打印API了,我不知道linux下的open office和star office是否支持excel的文件格式,如果支持的话我想跨平台性就完全不受限制了。个人认为办公室里使用打印的职员一般都会使用excel的吧。如果是做一个很大的系统的话还是建议全部集成。呵呵

当然,楼主要研究的话也可以,有成果了别忘记了分享一下思路,代码就不用的,牵涉到商业问题,呵呵。
haode 2004-08-10
  • 打赏
  • 举报
回复
打印是比较难做的。楼上的思路不错,很多情况下都这样做。不过这样的缺点是要求用户为了使用你的软件而装一些软件。而且这样JAVA的跨平台性就无法体现了……
shuneng 2004-08-10
  • 打赏
  • 举报
回复
支持楼上讲法,我是用简便的做法将数据写成CSV文件
用EXCEL或者WORD来排版也是很方便的 主要是公司的人都会这两个软件
Frank1982 2004-08-10
  • 打赏
  • 举报
回复
这个问题我不是太懂,以前曾经想过,但是觉得有点太麻烦了,给楼主提供另外一个思路:
可以生成一个Excel文件,然后打印的方式等等就直接在Excel中实现,这样子打印功能就无形当中强化了,而且会使用Excel的人也比较多吧
我是这么想的
楼主可以考虑考虑

62,623

社区成员

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

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