⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pdfviewresolver.java

📁 ecside jsp前途分页的标签 实现ajax 增删改查等
💻 JAVA
字号:
/*
 * Copyright 2006-2007 original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.ecside.view;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;

import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.apache.fop.apps.Driver;
import org.apache.fop.apps.Options;
import org.ecside.core.Preferences;
import org.ecside.core.TableConstants;
import org.xml.sax.InputSource;



/**
 * @author Wei Zijun
 *
 */

public class PdfViewResolver implements ViewResolver {
	
//    private Logger log = null;
    
    private final static String USERCONFIG_LOCATION = "exportPdf.userconfigLocation";
    private final static String FONT_LOCATION = "exportPdf.fontLocation";

    public void resolveView(ServletRequest request, ServletResponse response, Preferences preferences, Object viewData) throws Exception {
        InputStream is = new ByteArrayInputStream(((String) viewData).getBytes("UTF-8"));

        ByteArrayOutputStream out = new ByteArrayOutputStream();

        Driver driver = new Driver(new InputSource(is), out);

//        if (log == null) {
//            log = new ConsoleLogger(ConsoleLogger.LEVEL_WARN);
//            MessageHandler.setScreenLogger(log);
//        }
        
        String fontLocation = preferences.getPreference(FONT_LOCATION);
        String realPath=(String)request.getAttribute(TableConstants.SERVLET_REAL_PATH);
//        if (fontLocation.startsWith("/")) {
//        	fontLocation=fontLocation.substring(1);
//        }
        fontLocation=realPath.replace('\\', '/')+fontLocation;
        
        String userconfigLocation = preferences.getPreference(USERCONFIG_LOCATION);
        if (userconfigLocation != null) {
            
            InputStream input = PdfViewResolver.class.getResourceAsStream(userconfigLocation);
            
            StringBuffer tempConfigurationStrBuf = new StringBuffer();   
            
            byte[] buffer = new byte[4096];   
            int len;   
            if (input!=null){
	            while ((len = input.read(buffer)) != -1) {   
	                String s = new String(buffer, 0, len);   
	                tempConfigurationStrBuf.append(s);   
	            }
            }
  
            String configurationStr = tempConfigurationStrBuf.toString(); 
            
            configurationStr = configurationStr.replaceAll("\\{webapp.font\\}", fontLocation);   
  

            ByteArrayInputStream bais = new ByteArrayInputStream(configurationStr.getBytes());  
            
            if (input != null) {
                new Options(bais);
            }
        }

        
//        driver.setLogger(log);
        driver.setRenderer(Driver.RENDER_PDF);
        driver.run();

        byte[] contents = out.toByteArray();
        response.setContentLength(contents.length);
        response.getOutputStream().write(contents);
    }


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -