2013-02-02 5 views
7

문서에 텍스트 상자가 많은 PDF 파일을 만들고 다른 클래스의 텍스트 필드를 사용하여 PDF 파일을 만들려고합니다. 나는 PDFBox를 사용하고있다.PDFBox 사용 방법을 알 수 없음

새 파일을 만드는 것이 쉽고 한 줄의 텍스트를 쉽게 작성할 수 있습니다. 이제 다음 텍스트 줄이나 텍스트 필드를 삽입하려고 할 때 내용을 덮어 씁니다.

PDDocument doc = null; 
    PDPage page = null; 

     try{ 
      doc = new PDDocument(); 
      page = new PDPage(); 

      doc.addPage(page); 
      PDFont font = PDType1Font.HELVETICA_BOLD; 

      PDPageContentStream title = new PDPageContentStream(doc, page); 
      title.beginText(); 
      title.setFont(font, 14); 
      title.moveTextPositionByAmount(230, 720); 
      title.drawString("DISPATCH SUMMARY"); 
      title.endText(); 
      title.close(); 

      PDPageContentStream title1 = new PDPageContentStream(doc, page); 
      title1.beginText(); 
      title1.setFont(font, 11); 
      title1.moveTextPositionByAmount(30, 620); 
      title1.drawString("DEPARTURE"); 
      title1.endText(); 
      title1.close(); 


      doc.save("PDFWithText.pdf"); 
      doc.close(); 
    } catch (Exception e){ 
     System.out.println(e); 
    } 

"기존 콘텐츠를 덮어 쓰고 있습니다. 추가 모드를 사용해야합니다."라는 오류 메시지가 나타납니다.

그래서 title1.appendRawCommands(String)을 시도했지만 작동하지 않습니다.

(다른 클래스의) 새 텍스트 상자와 텍스트 필드를 어떻게 추가합니까? 인터넷에서 수십 개의 자습서를 읽었지만 한 줄만 작성하는 것으로 나타납니다.

+1

세 가지 부울 매개 변수가있는 생성자를 사용해야합니다. 사용자가 직접 질문에 대답하고 수락 할 수 있습니다. – Math

답변

7
PDPageContentStream title1 = new PDPageContentStream(doc, page, true, true); 

OP는 응답으로이 등록한, 상기 제 1 콘텐트 스트림은 실질적으로, 예를 들어 그래픽 상태를 변경하는 동작을 포함하는 경우 응답이

또한 있다는 것을 시스템이 뜻 플래그 현재 변환 행렬을 변경하고 이러한 변경 내용을 되돌 리면서 새 내용 스트림을 시작하기를 원하면

PDPageContentStream title1 = new PDPageContentStream(doc, page, true, true, true); 
+0

@Rupesh 제 편집을 보시고, 새로운 스트림의 시작 부분에서 그래픽 상태를 재설정하는 또 다른 생성자를 시도해보십시오. – mkl

+4

이것은 현재 사용되지 않습니다. 대신에'PDPageContentStream title1 = 새로운 PDPageContentStream (doc, page, PDPageContentStream.AppendMode.APPEND, false);'를 사용하십시오. – Defozo

관련 문제