원격 서버에서 pdf 파일을 읽고, pdfbox를 사용하여 분할하고 분할 된 파일을 로컬 시스템에 저장할 수 있지만 분할 된 파일을 원격 서버에 저장할 수 없습니다. 어떻게하면 pdfbox를 사용하여 할 수 있습니다. 다음은 로컬 시스템의 분할에 대한 코드 및 저장 갈라 파일 아래pdf 문서를 원격 아파치 서버에 저장 pdfbox를 사용하여
String urlPath = "http://localhost/input/"+pdfName;
String outputPath = "http://localhost/output/";
URL url = new URL(urlPath);
InputStream is = url.openStream();
document = new PDDocument();
try {
document = PDDocument.load(is);
} catch (IOException e2) {
e2.printStackTrace();
}
List<PDDocument> listOfSplitPages = null;
Splitter splitter = new Splitter();
splitter.setStartPage(splitStartPage); // split start page
splitter.setEndPage(splitPageNumber); // split start page
splitter.setSplitAtPage(splitPageNumber);
try {
listOfSplitPages = splitter.split(document); // splitting the document
} catch (Exception e1) {
e1.printStackTrace();
}
Iterator<PDDocument> iterator = listOfSplitPages.listIterator();
while(iterator.hasNext()){
PDDocument pdfDocument = iterator.next();
try{
pd.save(new FileOutputStream(outputPath+"file1.pdf"));
} catch (Exception e){
e.printStackTrace();
System.out.println("Something went wrong with page \n Here is the error message" + e);
}
}
document.close();
인 스택 트레이스
java.io.FileNotFoundException: http:\localhost\Invoices\output\file1.pdf (The filename, directory name, or volume label syntax is incorrect)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at org.apache.pdfbox.pdmodel.PDDocument.save(PDDocument.java:1118)
at org.apache.pdfbox.pdmodel.PDDocument.save(PDDocument.java:1106)
at Invoice.SplitPdfServlet.saveFileToRelavantFolder(SplitPdfServlet.java:174)
at Invoice.SplitPdfServlet.splitPdfUsingPageNumber(SplitPdfServlet.java:127)
at Invoice.SplitPdfServlet.doPost(SplitPdfServlet.java:81)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
스택 트레이스를 보여주세요. 또한 'outputFileName'은 어떻게 정의되어 있습니까? – VHS
@VHS 편집 내 코드 – codeHunter
이 전체 질문은 PDFBox와 아무 관련이 없습니다. 파일을 전달하는 방법에 대한 오해입니다. 당신이 할 수있는 당신의 분할 된 파일을 zip 파일에 저장하고 올바른 형식 등 (HttpServletResponse 출력 스트림의 일부로 반환합니다. 스택 추적에서 볼 수있는 서블릿을 프로그래밍하고있다) –