Window.open() を使用して、生成された jasper pdf レポートを新しいタブで開くことができます。
Window.open("report.pdf?traceCode=" + traceCode, "_BLANK", "");
ボタンをクリックして PDF ファイルを印刷したい場合、どうすればよいですか? (Window.print() はページ全体を印刷します)
Window.open() を使用して、生成された jasper pdf レポートを新しいタブで開くことができます。
Window.open("report.pdf?traceCode=" + traceCode, "_BLANK", "");
ボタンをクリックして PDF ファイルを印刷したい場合、どうすればよいですか? (Window.print() はページ全体を印刷します)
独自のクラスを作成し、アプリケーションで[印刷]ボタンをクリックすると、ネイティブの印刷メソッドを使用してWindow.Print()を呼び出すことができます。
GWT UIObjectは、この目的とメソッドに使用でき、文字列に変換されます。
public class NTPrint {
/**
* If true, use a Timer instead to print the internal frame
*/
public static boolean USE_TIMER = true;
/**
* Time in seconds to wait before printing the internal frame when using Timer
*/
public static int TIMER_DELAY = 1;
public static native void it() /*-{
$wnd.print();
}-*/;
public static void it(String html) {
try{
buildFrame(html);
if (USE_TIMER) {
Timer timer = new Timer() {
public void run() {
printFrame();
}
};
timer.schedule(TIMER_DELAY * 1000);
} else {
printFrame();
}
}
catch (Throwable exc) {
CommonUtil.printStackTrace(exc);
Window.alert(exc.getMessage());
}
}
/**
* This method will be called when you pass Widget without style.
* @param uiObjects
*/
public static void it( UIObject...uiObjects) {
StringBuffer objString= new StringBuffer();
for(UIObject obj: uiObjects)
objString.append(obj.toString());
it("", objString.toString());
}
}
印刷ボタンのOnClick、
/**
* prints all forms
* @param documentInfo
*/
public static void printForms(List<FormTransaction> formTransactions, String documentInfo, List<CellTransaction> cellTransactionList, boolean isComment, Document document) {
String style = "<link rel='styleSheet' type='text/css' href='v4workflow/css/style.css'>"
+ "<link rel='styleSheet' type='text/css' href='v4workflow/css/gwtcontrols.css'>"
+ "<style type='text/css' media='print'>"
+ "@media print {"
+ ".footerText{font-size:13px; font-weight:normal;margin-top:0px;}"
+ ".break {page-break-after:always}"
+ "}" + "</style>";
List<UIObject> uiObjects = new ArrayList<UIObject>();
NTPrintLayout printLayout = new NTPrintLayout();
printLayout.setSelectedDocument(null);
uiObjects.add(createHeader());
NTPrint.it(style,uiObjects);
}
public static FlexTable createHeader(){
FlexTable flexTable = new FlexTable();
flexTable.setWidth("100%");
return flexTable;
}