title: How to convert iTextPDF Document to Byte Array
body: <p>I need to convert <strong>iTextPDF Document</strong> file to <strong>byte[]</strong> after it's created in <strong>memory</strong>. I have already tested that I've no problem with creating PDF properly. The problem is how to convert it to byte array to store in DB.</p>
  
  <p>Here's my code:</p>
  
  <pre><code>Document generatedDocument = reportService.generateRequestForm(scdUser, jsonObject, 0, null);
  reportService.generateRequestForm(scdUser, jsonObject, 0, null);
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  PdfWriter pdfWriter = PdfWriter.getInstance(generatedDocument, baos);
  generatedDocument.open();
  document.setDocument(baos.toByteArray()); // stores as blob
  </code></pre>
  
  <p>I got value of <strong>null</strong> at database <strong>blob</strong> column. </p>
  
  <p>Here's my Document domain object:</p>
  
  <p><strong>Document Domain Object</strong></p>
  
  <pre><code>@Entity
  @Table(name = "document")
  public class Document implements java.io.Serializable {
  
      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      @Column(name = "document_id", nullable = false)
      private int documentId;
      @Column(name = "document_name", nullable = false, length = 65535)
      private String documentName;
      @Column(name = "document_type", nullable = false)
      private int documentType;
      @Temporal(TemporalType.TIMESTAMP)
      @Column(name = "upload_date", nullable = false, length = 19)
      private Date uploadDate = new Date();
      @Column(name = "document", nullable = false)
      private byte[] document;    // BLOB COLUMN
      @Column(name = "document_size", nullable = false)
      private long documentSize;
      @Column(name = "title", nullable = true, insertable = true, updatable = true, length = 65535, precision = 0)
      private String title;
      @Column(name = "tag", nullable = true, insertable = true, updatable = true, length = 65535, precision = 0)
      private String tag;
      @Column(name = "description", nullable = true, insertable = true, updatable = true, length = 65535, precision = 0)
      private String description;
      @Column(name = "shared", nullable = false, insertable = true, updatable = true, length = 1, precision = 0)
      private boolean shared = false;
      @Column(name = "status", nullable = false)
      private int status = DocumentStatus.READY.getStatus();
  
  
      public int getDocumentId() {
          return this.documentId;
      }
  
      public void setDocumentId(int documentId) {
          this.documentId = documentId;
      }
  
      public String getDocumentName() {
          return this.documentName;
      }
  
      public void setDocumentName(String documentName) {
          this.documentName = documentName;
      }
  
      public int getDocumentType() {
          return this.documentType;
      }
  
      public void setDocumentType(int documentType) {
          this.documentType = documentType;
      }
  
      public Date getUploadDate() {
          return this.uploadDate;
      }
  
      public void setUploadDate(Date uploadDate) {
          this.uploadDate = uploadDate;
      }
  
      public byte[] getDocument() {
          return this.document;
      }
  
      public void setDocument(byte[] document) {
          this.document = document;
      }
  
      public long getDocumentSize() {
          return this.documentSize;
      }
  
      public void setDocumentSize(long documentSize) {
          this.documentSize = documentSize;
      }
  
      public String getTag() {
          return tag;
      }
  
      public void setTag(String tag) {
          this.tag = tag;
      }
  
      public String getTitle() {
          return title;
      }
  
      public void setTitle(String title) {
          this.title = title;
      }
  
      public String getDescription() {
          return description;
      }
  
      public void setDescription(String description) {
          this.description = description;
      }
  
      public boolean getShared() {
          return shared;
      }
  
      public void setShared(boolean shared) {
          this.shared = shared;
      }
  
  
      public int getStatus() {
          return status;
      }
  
      public void setStatus(int status) {
          this.status = status;
      }
  
  
  }
  </code></pre>