当前位置:编程学习 > JAVA >>

OA系统工作流中的表单和正文如何转成图片【难度大,高手进】

各位好:
   最近在做一个OA项目,客户提出一个需求是OA中工作流走完后可以转为通知公告,与工作流关联的表单以及正文可以自动转为图片形式显示在通知公告的内容处,谁做过这样的功能?有什么方法可以实现?请说详细些,谢谢 --------------------编程问答-------------------- 这个有点难~ --------------------编程问答-------------------- 不清楚哦,看高手的了 --------------------编程问答-------------------- 占座  学习。。。等高手。。。 --------------------编程问答-------------------- 同求。。。。。。 --------------------编程问答-------------------- 这个要屏幕截图,保存。应当可以。 --------------------编程问答-------------------- 就是流程转化为图片?
--------------------编程问答--------------------

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Image;
import java.awt.Graphics;

import java.awt.image.BufferedImage;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.InputEvent;

import javax.swing.*;

import javax.swing.border.TitledBorder;

import javax.imageio.ImageIO;

import java.io.File;

/**
Create a screenshot of a component.
@author Andrew Thompson
*/
class ComponentImageCapture {

  static final String HELP =
    "Type Ctrl-0 to get a screenshot of the current GUI.\n" +
    "The screenshot will be saved to the current " +
    "directory as 'screenshot.png'.";

  public static BufferedImage getScreenShot(
    Component component) {

    BufferedImage image = new BufferedImage(
      component.getWidth(),
      component.getHeight(),
      BufferedImage.TYPE_INT_RGB
      );
    // call the Component's paint method, using
    // the Graphics object of the image.
    component.paint( image.getGraphics() );
    return image;
  }

  public static void main(String[] args) {
    Runnable r = new Runnable() {
      public void run() {
        final JFrame f = new JFrame("Test Screenshot");

        JMenuItem screenshot =
          new JMenuItem("Screenshot");
        screenshot.setAccelerator(
          KeyStroke.getKeyStroke(
            KeyEvent.VK_0,
            InputEvent.CTRL_DOWN_MASK
          ));
        screenshot.addActionListener(
          new ActionListener(){
            public void actionPerformed(ActionEvent ae) {
              BufferedImage img = getScreenShot(
                f.getContentPane() );
              JOptionPane.showMessageDialog(
                null,
                new JLabel(
                  new ImageIcon(
                    img.getScaledInstance(
                      img.getWidth(null)/2,
                      img.getHeight(null)/2,
                      Image.SCALE_SMOOTH )
                    )));
              try {
                // write the image as a PNG
                ImageIO.write(
                  img,
                  "png",
                  new File("screenshot.png"));
              } catch(Exception e) {
                e.printStackTrace();
              }
            }
          } );
        JMenu menu = new JMenu("Other");
        menu.add(screenshot);
        JMenuBar mb = new JMenuBar();
        mb.add(menu);
        f.setJMenuBar(mb);

        JPanel p = new JPanel( new BorderLayout(5,5) );
        p.setBorder( new TitledBorder("Main GUI") );
        p.add( new JScrollPane(new JTree()),
          BorderLayout.WEST );
        p.add( new JScrollPane( new JTextArea(HELP,10,30) ),
          BorderLayout.CENTER );

        f.setContentPane( p );
        f.pack();
        f.setLocationRelativeTo(null);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
      }
    };
    SwingUtilities.invokeLater(r);
  }



这段代码是在网上找的,将一个Component 输出到一个png文件 --------------------编程问答--------------------
Quote: 引用 7 楼 yktd26 的回复:

Java code
...
quote]
你找的这段可用吗 有没有验证过 --------------------编程问答--------------------

public static BufferedImage getScreenShot(
    Component component) {
 
    BufferedImage image = new BufferedImage(
      component.getWidth(),
      component.getHeight(),
      BufferedImage.TYPE_INT_RGB
      );
    // call the Component's paint method, using
    // the Graphics object of the image.
    component.paint( image.getGraphics() );
    return image;
  }

关键的就这个方法,你试试就知道了 --------------------编程问答-------------------- 你是说流程图转换为图片还是流程表单,
流程图的话根据每个结点判断,每个结点用图片替换,连接线根据逻辑关系连接,
表单数据如果为了不被篡改,可以转成pdf就好了!
不知道是不是你想要的
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,