合并pdf文件和丢失信息

时间:2017-12-07 15:32:07

标签: java pdf itext accessibility pdfbox

合并2或+ pdf我丢失了一些在文件上传阶段强加的信息(图像上的ALT标签)。这是方法:

public static void mergeFiles(ArrayList<String> filesToBeMerged, String mergedFileLocation) {   

    String[] filesTBM = filesToBeMerged.toArray(new String[filesToBeMerged.size()]);
    PDFMergerUtility ut = new PDFMergerUtility();
        try {       
          for (int i = 0; i < filesTBM.length; i++) {
                ut.addSource(filesTBM[i]);               
              }
          ut.setDestinationFileName(mergedFileLocation);
          ut.mergeDocuments();
   } catch (FileNotFoundException e) {
          e.printStackTrace();
   } catch (IOException e) {
          e.printStackTrace();
   } catch (COSVisitorException e) {
          e.printStackTrace();
   }
}

如果带有ALT标记的PDF在要合并的文件列表中,则结果是正确的,否则不是。到目前为止,我已尝试使用3个PDF,包括1个ALT标签。 问题:

如何在合并文件后丢失alt标记? 感谢那些想要帮助我的人 丹尼尔

N.b。我也尝试过iText pdf:

  public static void mergeFiles(ArrayList<String> filesToBeMerged, String mergedFileLocation) { 

String [] filesTBM = filesToBeMerged.toArray(new String [filesToBeMerged.size()]);

Document document = new Document();
PdfCopy copy = null;
    try {
        copy = new PdfCopy(document, new FileOutputStream(mergedFileLocation));
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (DocumentException e) {
        e.printStackTrace();
    }
    document.open();
    PdfReader[] reader = new PdfReader[filesTBM.length];
    for (int i = 0; i < filesTBM.length; i++) {
        try {
            reader[i] = new PdfReader(filesTBM[i]);
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            copy.addDocument(reader[i]);
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            copy.freeReader(reader[i]);
        } catch (IOException e) {
            e.printStackTrace();
        }
        reader[i].close();
    }
    document.close(); 
}

0 个答案:

没有答案