0

レポートと証明書を印刷するgrailsアプリケーションがあり、jQueryprintElementを使用してhtmlの一部を印刷しようとしています。私のHTMLは、透かしのロゴと、アプリケーションの一部ではないがサーバーのファイルシステムに保存されているいくつかの画像で構成されています。Firefoxで正しく印刷できますが(PDFとプリンターを使用)、GoogleChromeでの印刷に問題があります。私の画像とロゴはアプリケーションの一部ではなく、画像はファイルシステムに保存され、JavaoutputStreamsを使用してブラウザに転送されます。すべての画像はクロムで正しく表示されますが、ファイルに印刷しようとしたり、jQuery printElementを使用してプリンターを使用したりすると、htmlページに表示されている画像を印刷できず、画像なしで印刷されます。

html imgタグを使用して印刷しています。また、次のコードを使用してサーバーコンテキストに保存されているローカル画像を印刷しようとすると、Chromeで適切に印刷されます。

<img src="${resource(dir:'images',file:'exclamation.png')}" alt="" />

しかし、次のコードスニペットを使用してファイルシステムの画像にアクセスしようとすると、htmlページに表示されていても画像を印刷できません。

<img src="${createLink(action:'getImage', controller:'image')}?image=${logoPath}"/>

これはhtmlで次のようにレンダリングされます

<img src="/myApp/image/getImage?image=/home/dave/pictures/logo.png" >

ここで、logoPathは、サーバーファイルシステムに保存されている画像の絶対パスです。私もの絶対属性を使用してみ<img>ましたが、それは役に立ちません。

Firefoxで印刷できますが、Chromeでは印刷できません。そのため、Firefox専用のアプリケーションを制限しており、GoogleChromeでも動作させることができれば非常に役立ちます。

使用する

apache tomcat 6、JAVA 1.6、grails 1.3.7、jquery.printElement.min.js、Google Chrome 23(LinuxおよびWindows 7)、Firefox 16、17

4

1 に答える 1

0

私自身の質問に答えます。私はクロムで私のために働く解決策を見つけました。jquery.printElement.min.jsからjquery.printElement.jsに切り替えて、作成者の提案に従いました。

https://github.com/erikzaadi/jQuery.printElement/issues/2

jquery.printElement.jsで

交換:

documentToWriteTo.open();
documentToWriteTo.write(html);
documentToWriteTo.close();
_callPrint(popupOrIframe);

と:

documentToWriteTo.onload = _callPrint(popupOrIframe);
documentToWriteTo.open();
documentToWriteTo.write(html);
documentToWriteTo.close();

上記の提案を試しましたが、それでも画像を印刷できませんでした。そこで、jsの_callPrint(element)関数でタイムアウトを変更し、タイムアウトを50ではなく75に設定すると、すべての画像が印刷されていました。

于 2013-10-01T13:33:52.677 に答える