내가 JSF 2.0 (이클립스 IDE)을 사용하고 직접 PDF 파일을 생성하고 난 아파치 FOP 1.0을 사용하여 일부 PDF 파일을 생성 내 콩의 하나의 방법이있다. 내 JSF 페이지에서 "makePDF"버튼을 클릭하면 생성 된 PDF가 내 페이지가있는 동일한 윈도우에서 열립니다 (PDF보기/저장/인쇄 후 '뒤로'버튼을 사용해야합니다).는 AdobeReader
나는 "makePDF"버튼을 누르면, 표준 팝 아웃 대화 상자가 나타납니다 그리고 난 파일을 저장하거나 AdobeReader 그것을 열고 싶은 경우에 저를 요청하는 방식으로 변경할 수 있습니다.
, 난 내 "makePDF"버튼을 클릭 방법이 있나요은, PDF 직접 AdobeReader에서 열 생성 (그리고 난 여전히 내 JSF 페이지가 아무것도 확인해야 그나마) ??? 또한 (실제로 필요하지는 않지만 알아두면 좋음) 새로운 창에서 열거 나 프린터로 직접 보낼 수있는 방법이 있습니까?
여기 내 코드의 주요 부분이다 (나는 어떤 관련이없는 물건을 삭제) : 내가 response.setHeader("Content-disposition", "attachment");
를 제거하면이 같은 창에서 열립니다
public void makePDF(long contractId, int documentType) {
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
String basePath = externalContext.getRealPath("/");
try {
fopFactory.setUserConfig(new File(basePath + "/pdf_transform/config/userconfig.xml"));
fopFactory.setBaseURL(basePath);
fopFactory.getFontManager().setFontBaseURL(basePath);
} catch (Exception e) {
e.printStackTrace();
}
FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
foUserAgent.setBaseURL(fopFactory.getBaseURL());
HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
response.reset();
response.setHeader("Content-Type", "application/pdf");
response.setHeader("Content-disposition", "attachment");
BufferedOutputStream output = null;
try {
output = new BufferedOutputStream(response.getOutputStream(), 10240);
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, output);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer(new StreamSource(xsltfile));
Source src = new DOMSource(makeXML(contract)); // my method
Result res = new SAXResult(fop.getDefaultHandler());
transformer.transform(src, res);
} catch (Exception e) {
e.printStackTrace();
}
facesContext.responseComplete();
}`
, 그렇지 않으면 저를 저장하거나 공개하도록 요청합니다.
미리 감사드립니다.
감사합니다. 자바 코드에만 집중했기 때문에 PDF 처리 기사에서 빠졌습니다 :) 여전히 내 기본 질문에 대답하지 않습니다. 즉, AdobeReader에서 직접 열 수 있습니까 (예 : 창에 없음). 내 접근 방식을 바꾸려면? – Nikola
제어 할 수없는 브라우저 설정입니다. 예를 들어 Firefox에서 * 도구> 옵션> 응용 프로그램 *을 선택하십시오. – BalusC
고마워. 고마워. 그것이 실제로 jsf/fop 관련이 아니라는 것이 밝혀졌지만, 그것은 내 문제를 해결했습니다. – Nikola