0

问题描述:用户按下打印屏幕按钮,然后单击应用程序上的粘贴按钮。该图像将存储在服务器上。

我用谷歌搜索并在 Stack over 上找到答案并使用以下代码

public Image getImageFromClipboard()
{

Clipboard systemClipboard = (Clipboard) AccessController.doPrivileged(new PrivilegedAction() {
    public Object run() 
    {
        Clipboard tempClipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
     return tempClipboard;
    }

});


// get the contents on the clipboard in a 
// Transferable object
Transferable clipboardContents = systemClipboard.getContents(null);

// check if contents are empty, if so, return null
if (clipboardContents == null)
    return null;
else
    try
    {
        // make sure content on clipboard is 
        // falls under a format supported by the 
        // imageFlavor Flavor
        if (clipboardContents.isDataFlavorSupported(DataFlavor.imageFlavor))
        {
            // convert the Transferable object
            // to an Image object
            Image image = (Image) clipboardContents.getTransferData(DataFlavor.imageFlavor);
            return image;
        }
    } catch (UnsupportedFlavorException ufe)
    {
        ufe.printStackTrace();
    } catch (IOException ioe)
    {
        ioe.printStackTrace();
    }
/*try {
Robot robot;

    robot = new Robot();

final GraphicsConfiguration config
    = GraphicsEnvironment.getLocalGraphicsEnvironment()
          .getDefaultScreenDevice().getDefaultConfiguration();
final BufferedImage screenshot = robot.createScreenCapture(config.getBounds());
return screenshot;
} catch (AWTException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}*/
return null;
}

如果应用程序正在我的机器上运行并且我按 Print Screen,则此代码运行良好。图像可用并存储。

我的问题是,当我在单独的服务器上部署此应用程序并在另一台机器上运行应用程序时。当用户按下打印屏幕然后单击应用程序中的按钮时。服务器找不到任何图像,因为它在剪贴板上查找,而在服务器剪贴板上没有可用的图像。图像在客户端桌面剪贴板上可用。

请帮助我使用 JSF/primefaces 从服务器访问客户端剪贴板。或其他替代方式。

我使用的是 primefaces 3.4,服务器是 weblogic 10.3.5。

4

1 回答 1

0

如果您的应用程序将在不同的浏览器上运行,您将找不到 100% 可靠的方法,除非您使用 Flash 等其他技术实现某些特定组件。

我真的会使用保存图像并通过普通文件上传表单将其上传到服务器的方法。否则,您将因浏览器安全问题而头疼。

问候

于 2013-04-04T07:19:58.697 回答