【问题标题】:Reading multiple PDF files in order按顺序读取多个 PDF 文件
【发布时间】:2019-12-10 14:43:49
【问题描述】:

我将 PDF 文件拆分为多个 pdf 文件,然后尝试从文件夹中读取多个 pdf 文件并打印出文件名。

int l=1;
File file = new File(userInputFile);
try (PDDocument document = PDDocument.load(file)) {

    Splitter splitter = new Splitter();
    List<PDDocument> Pages = splitter.split(document);
    Iterator<PDDocument> iterator = Pages.listIterator();

    while (iterator.hasNext()) {
        PDDocument pd = iterator.next();    
        pd.save("C:\\Users\\Public\\Documents\\FolderForCheckListTest_000\\"+"Page "+l++);
    }

    document.close();
}

文件夹中的文件: 第 1 页、第 2 页。第 3 页、第 4 页、第 5 页、第 6 页、第 7 页、第 8 页、第 9 页和第 10 页。

当我阅读这些文件并打印它们时,我得到了错误的顺序: 第 1 页、第 10 页、第 2 页等等。

这是我读取文件的代码:

 for (File ListOfFile : ListOfFiles) {
    if (ListOfFile.isFile()) {
        files  = ListOfFile.getName();
        if (files.startsWith("Page")){
            000\\multiplePDFtest\\";
            String nfiles = path;
            PDFManager pdfManager = new PDFManager();
            String pdfToText = pdfManager.pdftoText(nfiles+files);
            listStrings.add(pdfToText);
        }
    }
}

你知道怎么解决吗? 提前谢谢你:)

【问题讨论】:

    标签: java multithreading pdf import pdfbox


    【解决方案1】:

    要创建固定的文件名长度,请更改此设置

    pd.save("C:\\Users\\Public\\Documents\\FolderForCheckListTest_000\\"+"Page "+l++);
    

    到这里

    pd.save("C:\\Users\\Public\\Documents\\FolderForCheckListTest_000\\"+"Page "+String.format("%02d",l++));
    

    (为清楚起见,我建议将“++”放在外面,但这是另一回事)

    【讨论】:

      【解决方案2】:

      默认排序是在 String 上进行的,因此 10 将排在 1 之后,然后是 2 等等。

      实现自定义排序 (Comparator) 并用于文件名集合列表 (Collections.sort) 并适当处理排序,即将结束数字视为数字。

      【讨论】:

      • 或使用String.format("%02d",l)而不是l命名文件“01”、“02”
      • @Tilman Hausherr 你的意思是这样的吗? pd.save("C:\\Users\\Public\\Documents\\FolderForCheckListTest_000\\"+String.format("%02d", l));?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-24
      • 1970-01-01
      • 2014-02-12
      • 1970-01-01
      • 2021-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多