私はリモートサーバからpdfファイルを読み込み、pdfboxを使って分割し、その分割ファイルをローカルシステムに保存できますが、分割されたファイルをリモートサーバに保存することはできません。どのように私はpdfboxを使用してそれを行うことができます。 以下は、ローカルシステムでの分割のためのコードとセーブ分割さファイルで以下pdfファイルをリモートサーバに保存する
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ファイルにあなたの分割さファイルを保存し、正しいタイプなど(私は、スタックトレースに表示されるものと、あなたがサーブレットをプログラミングしている) –