2017-05-08 1 views
0

et le transmettre à un service.pdf modifié en classpath et convertir en bytes en utilisant spring framework

Toute aide est appréciée. Je vous remercie.

Mon code de commande ci-dessous:

@RequestMapping("/individual/load/editablePDF.do") 
public void getFile(HttpServletRequest request,HttpServletResponse response) throws IOException { 
    Resource resource = new ClassPathResource("EditableFile.pdf"); 
    InputStream resourceInputStream = resource.getInputStream(); 
    PDDocument pdfDoc = PDDocument.load(resourceInputStream); 
    PDDocumentCatalog docCatalog = pdfDoc.getDocumentCatalog(); 
    PDAcroForm acroForm = docCatalog.getAcroForm(); 
    List<PDField> fieldList = acroForm.getFields(); 
    String[] fieldArray = new String[fieldList.size()]; 
    int i = 0; 
    for (PDField sField : fieldList) { 
     fieldArray[i] = sField.getFullyQualifiedName(); 
     i++; 
    } 
    for (String f : fieldArray) { 
     PDField field = acroForm.getField(f); 

     System.out.println("f is: " + f); 
     if (f.contains("company name")) { 
      String value = "Discovery"; 
      field.setValue(value); 
      System.out.println("printed: " + value + " to: " + f); 
     } 

    } 
    try { 
     pdfDoc.save("D:\\workspace\\TestSamples\\src\\Editable_ Discovery wellness days application form 2017-SAVED.pdf");//Not sure how to achieve this? 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    pdfDoc.close(); 
} 
+0

Vous pouvez également enregistrer directement dans un OutputStream. –

+0

Cela fonctionne maintenant. Merci Tilman :) –

+0

Content de l'entendre. S'il vous plaît supprimer la question ou y répondre vous-même (c'est autorisé). Je ne suis pas sûr de savoir lequel de mes conseils était utile. –

Répondre

1

Cela a fonctionné pour moi.

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
document.save(byteArrayOutputStream); 
document.close(); 
InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());