?? pdfviewresolver.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 + -