精华内容
下载资源
问答
  • java打印表格到打印机

    2021-03-17 19:52:05
    在这里我我有部分功能是要将一张表格通过java调用打印机打印出来,这里要用到java的Printable接口Printable 接口由当前页面 painter 的 print 方法实现...调用实现 Printable 的实例,以打印页面的图形。在 Printer...

    在这里我我有部分功能是要将一张表格通过java调用打印机打印出来,这里要用到java的Printable接口

    Printable 接口由当前页面 painter 的 print 方法实现,该方法由打印系统调用,以呈现页面。构建 Pageable 时,使用 PageFormat 实例和实现此接口的实例构成的实例用于描述每个页面。调用实现 Printable 的实例,以打印页面的图形。

    在 PrinterJob 上可以设置 Printable(..)。当客户端随后通过调用 PrinterJob.print(..) 启动打印时,控制被传送到打印系统,直到所有的页面完成打印。这是通过在文档中所有页面打印完成前一直调用 Printable.print(..) 来实现的。使用 Printable 接口时,只要打印系统请求,该打印就将页面内容提交给图像。

    Printable.print(..) 的参数包括描述该页面可打印区域(计算适合该页面的内容所需要的区域)的 PageFormat 和页面索引(它指定请求页面的从 0 开始的打印流索引)。

    在这里我通过链表来获取表格内容,以实现动态改变要打印出来的表格的大小,而我在打印方法中是用二维数组来实现打印和定位的,

    因此有了个蛋痛的将链表转化为一维数组,然后又将一维数组转化为二维数组的过程。

    链表转化为一维数组可以直接用toarray()方法

    而一维数组转化为二维数组,int n = 4;//列

    int m = osf.getInfoStrings().length/n;//行

    String[][] data1 = new String[m][n];

    int num = -1;

    for (int i = 0; i < m; i++) {

    for (int j = 0; j < n; j++) {

    num++;

    data1[i][j] = (String)osf.getInfoStrings()[num];

    }

    }

    重要的实现部分就是,画出表格然后打印

    为了使打印窗口显示在最前面,这里是在JDialog上画的表格

    jdialog = new JDialog();

    jdialog.addWindowListener(new WindowAdapter(){

    public void windowClosing(WindowEvent e){

    System.exit(0);}});

    TableModel dataModel = new AbstractTableModel() {

    public int getColumnCount() {

    return headers.length; }

    public int getRowCount() { return data.length;}

    public Object getValueAt(int row, int col) {

    return data[row][col];}

    public String getColumnName(int column) {

    return headers[column];}

    public Class getColumnClass(int col) {

    return getValueAt(0,col).getClass();}

    public boolean isCellEditable(int row, int col) {

    return (col==1);}

    };

    tableView = new JTable(dataModel);

    JScrollPane scrollpane = new JScrollPane(tableView);

    scrollpane.setPreferredSize(new Dimension(500, 80));

    jdialog.getContentPane().setLayout(new BorderLayout());

    jdialog.getContentPane().add(BorderLayout.CENTER,scrollpane);

    jdialog.pack();

    printButton= new JButton();

    printButton.setText("打印");

    jdialog.getContentPane().add(BorderLayout.SOUTH,printButton);

    RepaintManager.currentManager(jdialog).setDoubleBufferingEnabled(false);

    printButton.addActionListener(this);

    jdialog.setBounds(300, 100, 650, 500);

    jdialog.setVisible(true);

    }

    public void actionPerformed(ActionEvent e)

    {

    if(e.getSource()== printButton)

    {

    PrinterJob pj=PrinterJob.getPrinterJob();

    pj.setPrintable(TablePrint.this);

    pj.printDialog();

    try{

    pj.print();

    }

    catch (Exception PrintException) {}

    }

    jdialog.dispose();

    }

    public int print(Graphics g, PageFormat pageFormat, int pageIndex) throws PrinterException {

    Graphics2D  g2 = (Graphics2D) g;

    g2.setColor(Color.black);

    int fontHeight=g2.getFontMetrics().getHeight();

    int fontDesent=g2.getFontMetrics().getDescent();

    //leave room for page number

    double pageHeight = pageFormat.getImageableHeight()-fontHeight;

    double pageWidth =  pageFormat.getImageableWidth();

    double tableWidth = (double)

    tableView.getColumnModel().getTotalColumnWidth();

    double scale = 1;

    if (tableWidth >= pageWidth) {

    scale =  pageWidth / tableWidth;

    }

    double headerHeightOnPage= tableView.getTableHeader().getHeight()*scale;

    double tableWidthOnPage=tableWidth*scale;

    double oneRowHeight=(tableView.getRowHeight()+ tableView.getRowMargin())*scale;

    int numRowsOnAPage= (int)((pageHeight-headerHeightOnPage)/ oneRowHeight);

    double pageHeightForTable=oneRowHeight* numRowsOnAPage;

    int totalNumPages= (int)Math.ceil(((double)tableView.getRowCount())/ numRowsOnAPage);

    if(pageIndex>=totalNumPages) {

    return NO_SUCH_PAGE;

    }

    g2.translate(pageFormat.getImageableX(), pageFormat.getImageableY());

    //bottom center

    g2.drawString("Page: "+(pageIndex+1), (int)pageWidth/2-35, (int)(pageHeight+fontHeight-fontDesent));

    g2.translate(0f,headerHeightOnPage);

    g2.translate(0f,-pageIndex*pageHeightForTable);

    //If this piece of the table is smaller

    //than the size available,

    //clip to the appropriate bounds.

    if (pageIndex + 1 == totalNumPages) {

    int lastRowPrinted = numRowsOnAPage * pageIndex;

    int numRowsLeft = tableView.getRowCount() - lastRowPrinted;

    g2.setClip(0, (int)(pageHeightForTable * pageIndex), (int) Math.ceil(tableWidthOnPage), (int) Math.ceil(oneRowHeight *  numRowsLeft));

    }

    //else clip to the entire area available.

    else{

    g2.setClip(0, (int)(pageHeightForTable*pageIndex), (int) Math.ceil(tableWidthOnPage), (int) Math.ceil(pageHeightForTable));

    }

    g2.scale(scale,scale);

    tableView.paint(g2);

    g2.scale(1/scale,1/scale);

    g2.translate(0f,pageIndex*pageHeightForTable);

    g2.translate(0f, -headerHeightOnPage);

    g2.setClip(0, 0, (int) Math.ceil(tableWidthOnPage), (int)Math.ceil(headerHeightOnPage));

    g2.scale(scale,scale);

    tableView.getTableHeader().paint(g2);

    //paint header at top

    return Printable.PAGE_EXISTS;

    }

    编程依旧博大精深,在此还是略窥皮毛

    在这留个脚印,以后继续踩踩...

    展开全文
  • java打印html

    2017-10-16 15:39:21
    Java API实现HTML(HTML5)打印服务(事先设置好window默认打印机)
  • 使用java代码基于Eclipse开发环境实现爬虫抓取网页中的表格数据,将抓取到的数据在控制台打印出来,需要后续处理的话可以在打印的地方对数据进行操作。包解压后导入Eclipse就可以使用,在TestCrawTable中右键运行就...
  • 基于android平台的出题软件---- 每日30题 本app共编写了3个activity,1.Mainactivity作为主界面.2.surface,用来显示随机出的题.3.showresult,用来打印所有做过的题(含结果),一个类function用 ... SSL、OPENSSL、SSH...

    C&num; DataGridView中指定的单元格不能编辑

    注意:DataGridView控件是从.NET Framework 2.0版本开始追加的. ReadOnly属性的使用 DataGridView内所有的单元格不能编辑 当DataGridView.Re ...

    深入理解javascript原型和闭包(完结)

    原文链接:http://www.cnblogs.com/wangfupeng1988/p/3977924.html 说明: 该教程绕开了javascript的一些基本的语法知识,直接讲解javascr ...

    基于android平台的出题软件---- 每日30题

    本app共编写了3个activity,1.Mainactivity作为主界面.2.surface,用来显示随机出的题.3.showresult,用来打印所有做过的题(含结果),一个类function用 ...

    SSL、OPENSSL、SSH、OPENSSH

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议.TLS与 ...

    给RecyclerView实现的GridView加上HeaderView和FooterView

    给RecyclerView设置布局管理器 GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3); 写适配器,添加子项 ...

    redis cluster搭建

    一 .准备文件: Ruby :http://www.ruby-lang.org/en/downloads/    redis-3.0.5.tar.gz Redis:http://www.redis.c ...

    Git ~ 添加远程仓库 ~Git

    现在的情景是 , 你已经在本地创建了一个Git仓库后 , 又想在 Github 创建一个Git 仓库并且让这两个仓库进行远程同步 , 这样Github 上的仓库既可以作为备份 ,有可以让其他人通过仓库 ...

    Android中通过WebView控件实现与JavaScript方法相互调用的地图应用

    在Android中通过WebView控件,可以实现要加载的页面与Android方法相互调用,我们要实现WebView中的addJavascriptInterface方法,这样html才能调用andro ...

    ABP之动态WebAPI

    ABP之动态WebAPI ABP的动态WebApi实现了直接对服务层的调用(其实病没有跨过ApiController,只是将ApiController公共化,对于这一点的处理类似于MVC,对服务端的 ...

    centos7,yum安装的redis用systemctl无法启动

    因为之前使用显示命令启动redis的,要使redis在后台运行就需要改redis.conf中的daemonize 为yes. 这次在centos7上也顺手改了为yes,然后使用systemctl启动, ...

    展开全文
  • #re: Web表格打印页面的生成2008-01-24 14:25msungamp@java 你好,我遇到这个问题很久,由于数据太多,一个td里的东西在一个页面下根本放不下,就会分开俩页打,这就造成tr分成俩页,特别难看,下面是我的代码。...

    # re: Web表格打印页面的生成

    2008-01-24 14:25

    msung

    amp@java 你好,我遇到这个问题很久,由于数据太多,一个td里的东西在一个页面下根本放不下,就会分开俩页打,这就造成tr分成俩页,特别难看,下面是我的代码。你有什么好方法。能避免这准分页。

    计划信息打印

    function fReturn(){

    history.go(-1);

    }

    function select(key){

    //alert(document.getElementById('PM').style.display);

    findObj(key).style.display='';

    }

    //直接打印

    function doPrint() {

    //alert(findObj('antable').clientHeight);

    //alert(document.all.table.rows(0).cells(0).offsetHeight) //这个也是查询指定对象的高度。

    bdhtml=window.document.body.innerHTML;

    sprnstr="";

    eprnstr="";

    prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17);

    prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));

    window.document.body.innerHTML=prnhtml;

    var table1=document.all.tags("table") //找出所有table

    //alert(table1);

    var tabnumber=table1.length; //table的个数

    //alert(tabnumber);

    for(var i=0;i<=tabnumber;i++){ //循环遍历table

    //alert(table1[i].id); //输出table的id

    //下面是找出table的id为table的table,并且查出table的高度,如果他的高度高于899,就给它里面的id为‘one’的对象的高度赋值为850

    //并且给id为pp的对象插入pageEnd的样式,然后跳出循环。

    if(table1[i].id=="table"){

    //var frameheight=table1[i].rows(0).cells(0).offsetHeight

    var frameheight = findObj('table').clientHeight;

    if(frameheight>899){

    document.getElementById('one').height='850'

    //alert(document.getElementById('one').height);

    //alert(document.getElementById('PP').className);

    document.getElementById('PP').className='pageEnd'; //插入pageEnd样式,用于俩个table的分页。

    document.getElementById('two').height='850'

    //alert(document.getElementById('PP').className);

    }

    continue;

    }

    if(table1[i].id=="antable"){

    var frameheight = findObj('antable').clientHeight;

    if(frameheight>899){

    document.getElementById('three').height='850'

    document.getElementById('QQ').className='pageEnd';

    document.getElementById('four').height='850'

    }

    break;

    }

    }

    window.print();

    }

    ${(plan.month)?default('')}月份工作月报
    部门:  ${(plan.department)?default('')}日期: ${(plan.mitTime)?default('')}
    填报人  ${(plan.realName)?default('')}签发人  ${(plan.checkUserid)?default('')}
    上月计划${(plan.summarize)?default('')} 
    本月计划${(plan.program)?default('')} 
    展开全文
  • 要求能够实现给出任意带table表格的html文件,生成与表格相同内容的excel文件,附件可以作为测试文件,提供给定的roster.html文件,通过java代码,实现生成与html页面的table相同样式的roster.xls文件。
  • 本文介绍如何通过Java程序打印Excel工作表。可通过以下方法打印: 1、默认打印机打印 2、指定打印机打印程序环境spire.xls.jarJDK版本要求1.6.0及以上的高版本IDEAJar文件导入方法1:手动下载jar包导入。下载jar包,...

    码农公社  210.net.cn  210是何含义?10月24日是程序员节,1024 =210、210既

    210

    之意。

    本文介绍如何通过Java程序打印Excel工作表。

    可通过以下方法打印:  1、默认打印机打印  2、指定打印机打印

    程序环境

    spire.xls.jar

    JDK版本要求1.6.0及以上的高版本

    IDEA

    Jar文件导入

    方法1:手动下载jar包导入。下载jar包,并解压到指定路径,将该路径下lib文件夹下的jar文件导入java程序;

    方法2:Maven程序中配置pom.xml文件导入,如下配置:

    com.e-iceblue

    http://repo.e-iceblue.cn/repository/maven-public/

    e-iceblue

    spire.xls

    3.11.2

    完成配置后,导入jar。Eclipse中的导入方法可参考教程文档。

    jar导入效果图:

    4c405a60f4e8b614177c021ddd1887a3.png

    Java代码

    1. 默认打印机打印

    import com.spire.xls.*;

    import java.awt.print.PageFormat;

    import java.awt.print.Paper;

    import java.awt.print.PrinterException;

    import java.awt.print.PrinterJob;

    public class Print {

    public static void main(String[] args) {

    //加载excel工作簿

    Workbook workbook = new Workbook();

    workbook.loadFromFile("210.cx.xlsx");

    //创建 PrinterJob对象

    PrinterJob printerJob = PrinterJob.getPrinterJob();

    //指定打印页面为默认大小和方向

    PageFormat pageFormat = printerJob.defaultPage();

    //设置相关打印选项

    Paper paper = pageFormat.getPaper();

    paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());

    pageFormat.setPaper(paper);

    printerJob.setCopies(1);

    printerJob.setPrintable(workbook, pageFormat);

    //执行打印

    try {

    printerJob.print();

    } catch (PrinterException e) {

    e.printStackTrace();

    }

    }

    }

    2. 指定打印机打印

    import com.spire.xls.*;

    import javax.print.PrintService;

    import java.awt.print.PageFormat;

    import java.awt.print.Paper;

    import java.awt.print.PrinterException;

    import java.awt.print.PrinterJob;

    public class Print {

    public static void main(String[] args) throws Exception {

    //加载excel工作表

    Workbook workbook = new Workbook();

    workbook.loadFromFile("210.cx.xlsx");

    //创建 PrinterJob对象

    PrinterJob printerJob = PrinterJob.getPrinterJob();

    //指定打印机

    PrintService myPrintService = findPrintService("\\192.168.1.104\HP LaserJet P1007");

    printerJob.setPrintService( myPrintService);

    //指定打印页面为默认大小和方向

    PageFormat pageFormat = printerJob.defaultPage();

    //设置相关打印选项

    Paper paper = pageFormat.getPaper();

    paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());

    pageFormat.setPaper(paper);

    printerJob.setCopies(1);

    printerJob.setPrintable(workbook, pageFormat);

    //执行打印

    try {

    printerJob.print();

    } catch (PrinterException e) {

    e.printStackTrace();

    }

    }

    //通过打印机名称获取打印服务

    private static PrintService findPrintService(String printerName) {

    PrintService[] printServices = PrinterJob.lookupPrintServices();

    for (PrintService printService : printServices) {

    if (printService.getName().equals(printerName)) {

    return printService;

    }

    }

    return null;

    }

    }

    展开全文
  • 后台java代码连接数据库后根据格式生成excel表格并返回给前台界面下载。eclipse+maven+springmvc+springjdbc
  • 前言之前写过一篇表格分页打印的实践,其基本思路是按照一比一还原打印宽高,然后根据页面高度内容以及内容长度进行粗略计算,针对不能显示的进行内容分割。相比上次逻辑稍微繁琐一点,今天分享的方式是更加简单的,...
  • Java 生成pdf表格文档

    2021-03-16 01:42:05
    } } java生成复杂word文档 在Web应用中,有时需要按照固定的模板将数据导出到Word,如流程审批单,在流程处理完成后将处理过程按照流程单的要求导出,有时程序中需要实现生成 标准Word文档,要求能够打印,并且保持页面...
  • 亲测导出pdf文件,含有表格 包含三个文件: public class PDFBuilder extends PdfPageEventHelper public class PDFUtil public class PDFReport 可直接在里面运行main方法 ...
  • 原本计划使用NodeJS构建打印服务,调用本地电脑打印机进行数据打印,最后可参考资料偏少,由于项目紧急且对NodeJS的熟悉程度目前也还不够,所以转而使用比较熟悉的Java构建了调用本地打印机进行打印的服务。...
  • 本文试图对市面上流行的纯java实现的web报表工具,jasperreport 、 stylereport 、杰表、润乾报表、快逸、finererport为例,分析各报表工具采用的web打印技术的异同、优劣、及对用户需求的适应性,供大家参考。打印...
  • java表格输出

    2021-03-11 08:06:31
    以空格或多个制表符调节文本位置以达到表格效果 public class Str { public static void main(String[] args) { println(); } private static void println() { //表头 System.out.println("星期一\t星期二\t...
  • 前言本文将介绍通过Java编程在PDF文档中添加表格的方法。添加表格时,可设置表格边框、单元格对齐方式、单元格背景色、单元格合并、插入图片、设置行高、列宽、字体、字号等。使用工具:Free Spire.PDF for Java ...
  • JAVA的Web打印方式,主要使用PageOffice、POI、jacob,html打印等方式来进行。
  • JAVA打印数组的四种方法探究 无聊看模块Integer.java源码时(IDEA中鼠标悬浮在Integer上按ctrl+alt 可以转到类源码),因为刚学java,想尝试着仿照python的方法打印数组: final int[] arr1 = {1,2,3,4,5}; System....
  • 我想用两张桌子打印...这是使用xps查看器打印页面的图像(准确性不好)有没有像这样以这种精度制作打印图像这是代码:PrinterJob printjob = PrinterJob.getPrinterJob();printjob.setJobName(" TESSCO CUSTOMER ...
  • import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.print.Book;import java.awt.print.PageFormat;import java.awt.print.Paper;impo...
  • String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":...WEB页面导出为EXCEL文档的方法单元格A单元格A单元格A单元格A单元格合并行A单元格B单元格B单元...
  • 文/谢康 做Web开发的人员一定都会面临一个共同的难题,那就是打印。的确,相对于Windows桌JavaScript文/谢康做Web开发的人员一定都会面临一个共同的难题,那就是打印。的确,相对于Windows桌面应用程序来讲,Web...
  • 和树状物一样,表格在Swing相当的庞大和强大。它们最初有意被设计成以Java数据库连结(JDBC,在15章有介绍)为媒介的“网格”数据库接口,并且因此它们拥有的巨大的灵活性,使我们不再感到复杂。无疑,这是足以成为...
  • 最近拿到一个需求,需要导出pdf文档,市面上可以实现的方法有很多,经过测试和调研决定使用itext5来实现,话不多说,说干就干。1.依赖导入...2.pdf表格导出实现1.导出pdf// 1.打开文档并设置基本属...
  • layui的表格table选中数据后可打印本行数据,未打印时不显示,只在打印页面显示打印内容。只是做了一个简单的demo,页面需要自己去画,方法已实现。有具体的指导步骤
  • 本地一张需要填写的EXCEL报表,用java代码转成html后,有什么办法可以实现在线编辑,填表
  • java实现从网页上复制表格 需求分析 例如我这里有一个表格表格里的文本是可复制的,复制下来的文本如下。 序号 方法 描述 1 public URL(String spec) throws MalformedURLException 根据 String 表示...
  • javaScript实现网页表格打印功能

    万次阅读 2016-12-22 15:42:10
    js中的代码如下: var CreatedOKLodop7766=null;...//====判断是否需要安装CLodop云打印服务器:==== function needCLodop(){ try{ var ua=navigator.userAgent; if (ua.match(/Windows\sPhone/

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,206
精华内容 8,082
关键字:

java打印页面表格

java 订阅