2017-05-08 5 views
0

spring 및 pdfbox apache 라이브러리를 사용하여 컨트롤러에서 PDF를 편집했지만 저장 PDF를 바이트로 변환 할 수 있도록이 PDF를 클래스 경로에 저장할 수있는 방법이 확실하지 않습니다. 그것을 서비스에 전달하십시오.클래스 패스에 pdf를 편집하고 스프링 프레임 워크를 사용하여 바이트로 변환했습니다.

도움을 주시면 감사하겠습니다. 고맙습니다. 아래

내 컨트롤러 코드 :

@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

출력 스트림에 직접 저장할 수도 있습니다. –

+0

이제 작동합니다. 감사합니다. Tilman : –

+0

다행입니다. 질문을 삭제하거나 직접 답변하십시오 (허용됩니다). 나는 나의 힌트 중 어느 것이 도움이되는지 확신하지 못한다. –

답변

1

이 나를 위해 일했다.

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