web应用票据打印实现(四)

本文介绍了如何在Web应用中实现连续票据打印。通过使用iText生成PDF文档,结合Applet和Java Network Launch Protocol (JNLP),实现了在浏览器端不新开tab的情况下,连续打印多张票据的功能。这种方式保持用户焦点在同一页面,提供直观的打印选项。
摘要由CSDN通过智能技术生成

上一篇中,我们已经通过iText生成了共打印的pdf文档,如果没有特别的要求,利用浏览器的pdf插件来预览和打印已经能供满足我们Web应用在浏览器端实现票据套打的要求了。但在我们的项目中,客户要求一次操作之后连续进行打印,即使用不同的数据填充模板,连续套打上百张的票据。
当时考虑的实现方式有两种:

  • 生成一个多页的pdf文档,还是利用浏览器的pdf插件来进行打印
  • 生成多个pdf文档,使用applet利用java print service来进行浏览器端的连续打印

最终我们选择了第二种方案,好处是浏览器不用打开新的tab来显示pdf文档,用户的注意力可以始终停留在同一页面。此外打印选项可以直接显示在页面中,比较直观。

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.net.URL;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.print.*;

import java.io.IOException;
import java.io.InputStream;

import java.nio.ByteBuffer;

import javax.print.PrintService;
import javax.print.PrintServiceLookup;

import com.sun.pdfview.PDFFile;
import com.sun.pdfview.PDFPage;
import com.sun.pdfview.PDFPrintPage;

public class PDFPrintApplet extends JApplet implements ActionListener {
   
    /**
     * 
     */
    private static final long serialVersionUID = 6293078385198700265L;

    private PrintService[] services;
    private boolean degugFlg = true;
    private PrinterJob pjob = PrinterJob.getPrinterJob();
    private JComboBox printerList;
    private JButton printBtn;

    public void init() {
        // 创建applet的GUI,由event dispatching thread运行
        try {
            SwingUtilities.invokeAndWait(new Runnable() {
                pu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值