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项目中了

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!