package railo.runtime.tag; import javax.servlet.jsp.tagext.Tag; import railo.commons.io.res.Resource; import railo.commons.io.res.util.ResourceUtil; import railo.commons.pdf.PDFDocument; import railo.commons.pdf.PDFException; import railo.commons.pdf.PDFPageMark; import railo.runtime.exp.ApplicationException; import railo.runtime.exp.PageException; import railo.runtime.ext.tag.BodyTagImpl; public final class DocumentSection extends BodyTagImpl { private PDFDocument _document; public DocumentSection() { this._document=null; } private PDFDocument getPDFDocument() { //SerialNumber sn = pageContext.getConfig().getSerialNumber(); if(_document==null)_document=new PDFDocument(); return _document; } @Override public void release() { super.release(); _document=null; } /** set the value proxyserver * Host name or IP address of a proxy server. * @param proxyserver value to set **/ public void setProxyserver(String proxyserver) { getPDFDocument().setProxyserver(proxyserver); } /** set the value proxyport * The port number on the proxy server from which the object is requested. Default is 80. When * used with resolveURL, the URLs of retrieved documents that specify a port number are automatically * resolved to preserve links in the retrieved document. * @param proxyport value to set **/ public void setProxyport(double proxyport) { getPDFDocument().setProxyport((int)proxyport); } /** set the value username * When required by a proxy server, a valid username. * @param proxyuser value to set **/ public void setProxyuser(String proxyuser) { getPDFDocument().setProxyuser(proxyuser); } /** set the value password * When required by a proxy server, a valid password. * @param proxypassword value to set **/ public void setProxypassword(String proxypassword) { getPDFDocument().setProxypassword(proxypassword); } /** * @param marginbottom the marginbottom to set */ public void setMarginbottom(double marginbottom) { getPDFDocument().setMarginbottom(marginbottom); } /** * @param marginleft the marginleft to set */ public void setMarginleft(double marginleft) { getPDFDocument().setMarginleft(marginleft); } /** * @param marginright the marginright to set */ public void setMarginright(double marginright) { getPDFDocument().setMarginright(marginright); } /** * @param margintop the margintop to set */ public void setMargintop(double margintop) { getPDFDocument().setMargintop(margintop); } /** * @param src the src to set * @throws ApplicationException */ public void setSrc(String src) throws ApplicationException { try { getPDFDocument().setSrc(src); } catch (PDFException e) { throw new ApplicationException(e.getMessage()); } } /** * @param srcfile the srcfile to set * @throws PageException * @throws */ public void setSrcfile(String strSrcfile) throws PageException { Resource srcfile = ResourceUtil.toResourceExisting(pageContext, strSrcfile); pageContext.getConfig().getSecurityManager().checkFileLocation(srcfile); try { getPDFDocument().setSrcfile(srcfile); } catch (PDFException e) { throw new ApplicationException(e.getMessage()); } } /** * @param mimetype the mimetype to set */ public void setMimetype(String strMimetype) { getPDFDocument().setMimetype(strMimetype); strMimetype = strMimetype.toLowerCase().trim(); } public void setHeader(PDFPageMark header) { getPDFDocument().setHeader(header); } public void setFooter(PDFPageMark footer) { getPDFDocument().setFooter(footer); } /** * @param name the name to set */ public void setName(String name) { getPDFDocument().setName(name); } /** * @param authUser the authUser to set */ public void setAuthuser(String authUser) { getPDFDocument().setAuthUser(authUser); } /** * @param authPassword the authPassword to set */ public void setAuthpassword(String authPassword) { getPDFDocument().setAuthPassword(authPassword); } /** * @param userAgent the userAgent to set */ public void setUseragent(String userAgent) { getPDFDocument().setUserAgent(userAgent); } @Override public int doStartTag() { return EVAL_BODY_BUFFERED; } @Override public void doInitBody() { } @Override public int doAfterBody() { getPDFDocument().setBody(bodyContent.getString()); return SKIP_BODY; } @Override public int doEndTag() { Document doc = getDocument();// TODO write evaluator for documentitem and section if(doc!=null)doc.addPDFDocument(getPDFDocument()); return EVAL_PAGE; } private Document getDocument() { // get Mail Tag Tag parent=getParent(); while(parent!=null && !(parent instanceof Document)) { parent=parent.getParent(); } if(parent instanceof Document) { return (Document)parent; } return null; } /** * sets if has body or not * @param hasBody */ public void hasBody(boolean hasBody) { } }