0

問題の説明: ユーザーが印刷画面ボタンを押してから、アプリケーションの貼り付けボタンをクリックします。その画像はサーバーに保存されます。

スタックオーバーでグーグル検索して答えを見つけ、次のコードを使用しました

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

アプリケーションがさまざまなブラウザーで実行される場合、Flash などの他のテクノロジーを使用して特定のコンポーネントを実装しない限り、100% 信頼できる方法はありません。

画像を保存し、通常のファイル アップロード フォームを介してサーバーにアップロードする方法を実際に使用します。そうしないと、ブラウザのセキュリティの問題で頭痛の種になります.

よろしく

于 2013-04-04T07:19:58.697 に答える