Jasper report


jasper report Studio


https://sourceforge.net/projects/jasperstudio/

1.ダウンロードしてDBに接続します。






globals.属性のDB情報を参照してください



進行中のプロジェクトlibのojdbc 6.jarがあるので追加できます.



成功した場合、接続は成功しました

2.レポートテンプレートの作成










下に枠線だけを付ける場合は、上の枠線をクリックし、ペン幅を0.00に設定します.














3.pdfハングルの設定


それをそのままプロジェクトに入れてプリントアウトすれば、ハングルはありません.
オールですが、出力だけでいいのですが・・・


あなたが使っているフォントをFontNameに書くことができます.
fontsフォルダに澄んだゴシックを入れるのでmalgun.ttfを使用するように設定します.

4.vo形式に名前を変更



あとはプレビューできないかも・・・

5.テンプレート完了



注:大学の成績のように、いくつかの行に分けてテキストを印刷するには、shift+enterだけでいいです.

Javaプロジェクトとともにpdfを出力


1.jasper reportテンプレートをプロジェクトに配置する


プロジェクトリソースの下にフォルダを作成し、作成したテンプレートを入れます.

2.依存項目の追加

<!-- https://mvnrepository.com/artifact/net.sf.jasperreports/jasperreports -->
		<dependency>
		    <groupId>net.sf.jasperreports</groupId>
		    <artifactId>jasperreports</artifactId>
		    <version>6.17.0</version>
		</dependency>
		
<!-- https://mvnrepository.com/artifact/net.sf.jasperreports/jasperreports-functions -->
		<dependency>
		    <groupId>net.sf.jasperreports</groupId>
		    <artifactId>jasperreports-functions</artifactId>
		    <version>6.17.0</version>
		</dependency>
		
<!-- https://mvnrepository.com/artifact/net.sf.jasperreports/jasperreports-fonts -->
		<dependency>
		    <groupId>net.sf.jasperreports</groupId>
		    <artifactId>jasperreports-fonts</artifactId>
		    <version>6.17.0</version>
		</dependency>

3.フォント&フォントを保存します。xmlの生成



ttfファイルに入れればいいです.
プロジェクトでpdfを生成する場合、jasper report studioに指定した明確なゴシックフォントを見つけさせます.xmlを作成します.
<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
	
	<fontFamily name="맑은 고딕">

            <normal>fonts/malgun.ttf</normal>

            <pdfEncoding>Identity-H</pdfEncoding>

            <pdfEmbedded>true</pdfEmbedded>

            <exportFonts>

            <export key="net.sf.jasperreports.html">'맑은 고딕', 'Malgun Gothic', Arial, sans-serif</export>

            <export key="net.sf.jasperreports.xhtml">'맑은 고딕', 'Malgun Gothic', Arial, sans-serif</export>

            </exportFonts>
	
	</fontFamily>
	
	
</fontFamilies>

4.jasperプロパティの作成



propertiesに入れます.
net.sf.jasperreports.extension.registry.factory.fonts=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.ireportfamily1629770262716=fonts/fontsfamily1629770262716.xml

5.サーバ上でpdfを作成する


画面でボタンをクリックしたときにpdfを生成して画面に表示したいです.
ボタン->コントローラpdf生成->ファイル名return->jspのpdfObject.jsで開く
ajaxに移動してからファイル名を受信できます.

5-1. controller

@RequestMapping(value = "매핑주소", method = RequestMethod.POST, produces = MediaType.TEXT_PLAIN_VALUE)
@ResponseBody
public String generatedReportMozipInwon(MozipInwonStatusVO mozipInwonStatusVO, HttpServletRequest request) throws Exception {
	// 데이터 조회
	List<?> mozipInwonList = mozipInwonStatusService.generateReportData(mozipInwonStatusVO);
	
        //pdf 생성하여 파일이름 리턴받음
	String resultStr = mozipInwonStatusService.generateReportMozipInwon(mozipInwonList, request);
	
	return	resultStr;
}

5-2. service



jsp団は6日...

6. pdf.js + pdfObject.jsを使用してpdfを画面に出力


サーバにpdf自体を投げ出し、jpsにembedsrcを入れてもpdfが見えますがEXでは実現できません.
だからpdfjsまたはpdfObjectと書いてあります.

pdf.jsとpdfObject.jsをすべてjpsに入れた後

シナリオを書いてあげます.

6-1. jsp関数の作成

function fn_print() {
	
	 $.ajax({
	      type    :'POST',
	      url     :'${contextPath}/매핑주소',
	      data    : $("#searchVO").serialize(),
	      dataType: 'text',
	      async   : false,
	      success : function(data){
               	    var options = {
               	        pdfOpenParams: {
               	            navpanes: 0,
               	            toolbar: 0,
               	            statusbar: 0,
               	            view: "FitV",
               	            page: 1
               	        },
               	        width : "100%",
               	        height: "600px",
               	        forcePDFJS: true,
               	        PDFJS_URL: "${contextPath }/resources/default/js/pdf/pdfjs/web/viewer.html"
           	    }

          	    PDFObject.embed("${contextPath}/pdf/"+data+".pdf", "#myPdf", options);
       			popOpen("#pop-print");
	            			
                    
        },
      	error   : function(error) {
            alert(error.status);
        }
    })
    
    }