Pdfの並べ替えを行うコードを作っているのですが、
以下のエラーが発生し、保存を行うことができません。
どう改変すればよいでしょうか?
どなたかご教授お願いします。
java
1import java.io.File; 2import java.io.FileOutputStream; 3import java.io.IOException; 4import java.io.OutputStream; 5import java.util.ArrayList; 6 7public class Main { 8 public static void main(String... src) throws IOException { 9 ArrayList<PDPage> pages1 = new ArrayList<PDPage>(); 10 ArrayList<PDPage> pages2 = new ArrayList<PDPage>(); 11 12 13 File file1 = new File("C:\SHARE\Sample1.pdf"); 14 File file2 = new File("C:\SHARE\Sample2.pdf"); 15 try (PDDocument document = PDDocument.load(file1)) { 16 for (PDPage page : document.getPages()) { 17 pages1.add(page); 18 } 19 } catch (IOException e) { 20 e.printStackTrace(); 21 } 22 try (PDDocument document = PDDocument.load(file2)) { 23 for (PDPage page : document.getPages()) { 24 pages2.add(page); 25 } 26 } catch (IOException e) { 27 e.printStackTrace(); 28 } 29 30 if (pages1.size() == pages2.size() && pages1.size() % 2 == 0) { 31 int page1by4=pages1.size()/2; 32 int page1by2=pages1.size(); 33 PDDocument pdDocument = new PDDocument(); 34 System.out.println(pages1.size()); 35 for (int i = 0; i < page1by4; i++) { 36 pdDocument.addPage(pages1.get(1+2*i)); 37 pdDocument.addPage(pages2.get(page1by2-1-2*i)); 38 } 39 for (int i=0; i<page1by4;i++){ 40 pdDocument.addPage(pages2.get(1+2*i)); 41 pdDocument.addPage(pages1.get(page1by2-1-2*i)); 42 } 43 pdDocument.save("Save1.pdf"); 44 pdDocument.close(); 45 46// outputStream.flush(); 47// outputStream.close(); 48 } else { 49 System.out.println("Pages count invalid.."); 50 } 51 } 52} 53
"C:\Program Files\Java\jdk1.8.0_241\bin\java.exe" -Xms2048m -Xmx2048m "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2019.3.2\lib\idea_rt.jar=54343:C:\Program Files\JetBrains\IntelliJ IDEA 2019.3.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_241\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_241\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_241\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_241\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_241\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_241\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_241\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_241\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_241\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_241\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_241\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_241\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_241\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_241\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_241\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_241\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_241\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_241\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_241\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_241\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_241\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_241\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_241\jre\lib\rt.jar;C:\Users\shion\IdeaProjects\Pdf Tools for Books\target\classes;C:\Users\shion.m2\repository\org\apache\pdfbox\pdfbox\2.0.18\pdfbox-2.0.18.jar;C:\Users\shion.m2\repository\org\apache\pdfbox\fontbox\2.0.18\fontbox-2.0.18.jar;C:\Users\shion.m2\repository\commons-logging\commons-logging\1.2\commons-logging-1.2.jar" Main 34 Exception in thread "main" java.io.IOException: COSStream has been closed and cannot be read. Perhaps its enclosing PDDocument has been closed? at org.apache.pdfbox.cos.COSStream.checkClosed(COSStream.java:83) at org.apache.pdfbox.cos.COSStream.createRawInputStream(COSStream.java:133) at org.apache.pdfbox.pdfwriter.COSWriter.visitFromStream(COSWriter.java:1219) at org.apache.pdfbox.cos.COSStream.accept(COSStream.java:404) at org.apache.pdfbox.cos.COSObject.accept(COSObject.java:158) at org.apache.pdfbox.pdfwriter.COSWriter.doWriteObject(COSWriter.java:526) at org.apache.pdfbox.pdfwriter.COSWriter.doWriteObjects(COSWriter.java:464) at org.apache.pdfbox.pdfwriter.COSWriter.doWriteBody(COSWriter.java:448) at org.apache.pdfbox.pdfwriter.COSWriter.visitFromDocument(COSWriter.java:1113) at org.apache.pdfbox.cos.COSDocument.accept(COSDocument.java:449) at org.apache.pdfbox.pdfwriter.COSWriter.write(COSWriter.java:1386) at org.apache.pdfbox.pdfwriter.COSWriter.write(COSWriter.java:1273) at org.apache.pdfbox.pdmodel.PDDocument.save(PDDocument.java:1357) at org.apache.pdfbox.pdmodel.PDDocument.save(PDDocument.java:1328) at org.apache.pdfbox.pdmodel.PDDocument.save(PDDocument.java:1316) at Main.main(Main.java:45) Process finished with exit code 1
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/29 07:18