bing1987jing 2017-09-05 08:56 采纳率: 0%
浏览 1176

java 使用itext拆分pdf出错

使用main方法手动调用没问题,放入项目中动态调用出错

    public static void main(String[] args) {  
        partitionPdfFile("C:\\mb\\111.pdf","C:\\mb\\Chapter04.pdf", 2,2); 

    }  

    /** 
     * 截取pdfFile的第from页至第end页,组成一个新的文件名 
     * @param pdfFile 
     * @param subfileName 
     * @param from 
     * @param end 
     * 
     */  
    public static void partitionPdfFile(String pdfFile,  
            String newFile, int from, int end) {  
        System.out.println("aaa");
        Document document = null;  
        PdfCopy copy = null;          
        try {  
            PdfReader reader = new PdfReader(pdfFile);            
            int n = reader.getNumberOfPages();            
            if(end==0){  
                end = n;  
            }  
            ArrayList<String> savepaths = new ArrayList<String>();  
//            String staticpath = pdfFile.substring(0, pdfFile.lastIndexOf("\\")+1);  
//            String savepath = staticpath+ newFile;  
            String savepath =  newFile; 
            savepaths.add(savepath);  
            document = new Document(reader.getPageSize(1));  
            copy = new PdfCopy(document, new FileOutputStream(savepaths.get(0)));  
            document.open();  
            for(int j=from; j<=end; j++) {  
                document.newPage();   
                PdfImportedPage page = copy.getImportedPage(reader, j);  
                copy.addPage(page);  
            }  
            document.close();  

        } catch (IOException e) {  
            e.printStackTrace();  
        } catch(DocumentException e) {  
            e.printStackTrace();  
        }  
    }  

使用其他方法调用 partitionPdfFile("C:\mb\111.pdf","C:\mb\Chapter04.pdf", 2,2); 出错
错误内容:

 java.io.EOFException
    at com.itextpdf.text.pdf.RandomAccessFileOrArray.readFully(RandomAccessFileOrArray.java:261)
    at com.itextpdf.text.pdf.RandomAccessFileOrArray.readFully(RandomAccessFileOrArray.java:253)
    at com.itextpdf.text.pdf.PdfReader.getStreamBytesRaw(PdfReader.java:2254)
    at com.itextpdf.text.pdf.PdfReader.getStreamBytesRaw(PdfReader.java:2291)
    at com.itextpdf.text.pdf.PRStream.toPdf(PRStream.java:215)
    at com.itextpdf.text.pdf.PdfIndirectObject.writeTo(PdfIndirectObject.java:157)
    at com.itextpdf.text.pdf.PdfWriter$PdfBody.add(PdfWriter.java:396)
    at com.itextpdf.text.pdf.PdfWriter$PdfBody.add(PdfWriter.java:376)
    at com.itextpdf.text.pdf.PdfWriter$PdfBody.add(PdfWriter.java:368)
    at com.itextpdf.text.pdf.PdfWriter.addToBody(PdfWriter.java:806)
    at com.itextpdf.text.pdf.PdfCopy.copyIndirect(PdfCopy.java:214)
    at com.itextpdf.text.pdf.PdfCopy.copyObject(PdfCopy.java:282)
    at com.itextpdf.text.pdf.PdfCopy.copyDictionary(PdfCopy.java:236)
    at com.itextpdf.text.pdf.PdfCopy.copyObject(PdfCopy.java:280)
    at com.itextpdf.text.pdf.PdfCopy.copyIndirect(PdfCopy.java:213)
    at com.itextpdf.text.pdf.PdfCopy.copyObject(PdfCopy.java:282)
    at com.itextpdf.text.pdf.PdfCopy.copyDictionary(PdfCopy.java:236)
    at com.itextpdf.text.pdf.PdfCopy.copyObject(PdfCopy.java:280)
    at com.itextpdf.text.pdf.PdfCopy.copyIndirect(PdfCopy.java:213)
    at com.itextpdf.text.pdf.PdfCopy.copyObject(PdfCopy.java:282)
    at com.itextpdf.text.pdf.PdfCopy.copyDictionary(PdfCopy.java:236)
    at com.itextpdf.text.pdf.PdfCopy.copyObject(PdfCopy.java:280)
    at com.itextpdf.text.pdf.PdfCopy.copyDictionary(PdfCopy.java:236)
    at com.itextpdf.text.pdf.PdfCopy.copyObject(PdfCopy.java:280)
    at com.itextpdf.text.pdf.PdfCopy.copyDictionary(PdfCopy.java:233)
    at com.itextpdf.text.pdf.PdfCopy.addPage(PdfCopy.java:362)
  • 写回答

3条回答

  • 猿李 2017-09-05 09:36
    关注

    你是不是放在web项目中了

    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料