2021年4月30日 星期五

ITEXT 5.5 合併文字的範例

最近有需求處理在PDF上加文字,有別於之前的浮水印使用的方式不太一樣,故備忘之...

X座標與Y座標可使用十分逼近法取得,無法像圖檔使用小畫家看座標,沒甚麼大學問就是苦功吧。

範例CODE 如下:

BaseFont font = BaseFont.createFont("c:\\windows\\fonts\\EUDCK.TTF", "Identity-H", BaseFont.NOT_EMBEDDED);

InputStream input =  new FileInputStream("templater.pdf");

OutputStream output= new FileOutputStream(new File("target.pdf"));

PdfReader reader = new PdfReader(input);

PdfStamper stamper = new PdfStamper(reader, output);

ColumnText ct = new ColumnText(stamper.getOverContent(1));  

Font FontChinese14 = new Font(font, 14, 0);

Paragraph iText = new Paragraph(Tpmienrol.getTpmi_Namec(), FontChinese14);

ColumnText.showTextAligned(stamper.getOverContent(1), Element.ALIGN_LEFT, iText, x座標, y座標, 0);   

stamper.setFormFlattening(true);

stamper.close();

reader.close();

因專案使用的是iTEXT 5.5版本,在iTEXT 7會更簡便些,BJ4就醬子吧~~改專案支援的FRAMEWORK施工更大,就向下延伸即可。

2021年4月9日 星期五

DB2 SP 中 LOOP Call SP Get Result

CREATE OR REPLACE PROCEDURE SCHEMANAME.SP_CALLER() DYNAMIC RESULT SETS 1

P1:BEGIN

DECLARE SQLSTATE CHAR(5) DEFAULT '00000';
DECLARE loc_cursor RESULT_SET_LOCATOR VARYING;
DECLARE CONTINUE HANDLER FOR SQLSTATE '23505' SET RET=SQLCODE;
SET PP = 1 ;
WHILE(PP < 5) DO
    CALL SCHEMANAME.SPNAME(PP);
    ASSOCIATE RESULT SET LOCATOR (loc_cursor) WITH PROCEDURE SCHEMANAME.SPNAME; 
    ALLOCATE cur CURSOR FOR RESULT SET loc_cursor;
    L1: LOOP 
        FETCH C1 INTO column1, column2, ...; 
        IF SQLSTATE<>'00000' THEN 
            LEAVE L1;  
         END IF; 
    END LOOP L1;
    CLOSE cur;

    SET PP = PP + 1 ;
END WHILE;

END P1
狀況:
DB2寫SP如果SP裡面又對另一個SP做多次呼叫,會一直抓到第一次呼叫SP的結果。
貌似因為DB2版本問題,所以原寫法建立到新的DB2就有問題,取值時須再LOOP即可!感謝辜狗大師。

2021年2月8日 星期一

WIN X BAT在工作排程器沒反應的調整

在批次作業要呼叫JAR時使用了相對路徑./xxx.jar方式呼叫,從Consloe執行OK可是設定上工作排程器就變成閃一下結束,參考了這網誌的說明就是卡在切換目錄上,實測加了後就可以跑了。

加了這個指令 CD /D "%~dp0" 就搞定了

/D 表示切換到執行的資料夾

"%~dp0" 表示當下的目錄


補充說明:本來也試過直接寫死絕對路徑不過考量到後續維護若干年後忘了或換位置會造成執行上的困擾,改成變數取得應該是比較好的做法。當然設定"開始位置"也是方法之一,但這個如果經手他人(MIS)如果對方忘了或疏忽掉也是隱患...

2020年12月16日 星期三

Datatable增加Export/Copy Button一併顯示筆數下拉的設定調整

JS Datatable dom設定成Bfrtip會顯示Button但是造成無法切換筆數,改成Blfrtip即可解決,至於排版可參考下列說網址說明

https://datatables.net/reference/option/dom

2020年12月4日 星期五

Get method has XSS的處理

 弱點掃描反映有高風險問題,處理方法註記下

原寫法

<%
String TEST = "";
if ((request.getParameter("test")!=null)) TEST = request.getParameter("test");
%>

<input type="TEXT" id="TEST" name="TEST"  value="<%=TEST %> />

在這方式下就GG惹
http://localhost/home?test=%22onmouseover%3D%22alert%28140%29%22

改寫法搞定

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<input type="TEXT" id="TEST" name="TEST"  value="${fn:escapeXml(param.test)}" />

轉跑道寫JSP 一些PHP跟C#處理的方式會有所不同,恩恩...記錄下