2013-09-27 132 views
0

我期望以下代碼用適當的元數據創建一個空白PDF。相反,我最終得到一個0kb的pdf文件,當然Acrobat不會打開。我已經瀏覽了http://www.avajava.com/tutorials/lessons/how-do-i-write-to-a-pdf-file-using-itext.htmlhttp://www.java4s.com/core-java/creating-pdf-with-java-and-itext-generating-pdf-using-java-example/通過iText創建帶有0kb和無內容的.pdf文件

我似乎正在做這個正確的...但是...不是。

public class BuildSheet { 
    JobSetEntity jobSetEntity; 

    public BuildSheet(JobSetEntity jobSetEntity) { 
     this.jobSetEntity = jobSetEntity; 
    } 

    public boolean generate(File destinationFile) { 
     try { 
      Document document = new Document(); 
      FileOutputStream stream = new FileOutputStream(destinationFile); 
      PdfWriter.getInstance(document, stream); 
      document.open(); 
      addMetaData(document); 
      document.close(); 
      stream.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      return false; 
     } 

     return true; 
    } 

    private void addMetaData(Document document) { 
     document.addAuthor(ApplicationContextProvider.getProperty("application.name")); 
     document.addCreator(ApplicationContextProvider.getProperty("application.name")); 
     document.addTitle("Build sheet for JobSet #"+jobSetEntity.getId()); 
     document.addLanguage("EN"); 
    } 
} 

回答

0

似乎沒有在任何code.You問題,只是需要一些頁,內容在PDF之前使用Adobe Reader打開

我也是從http://www.vogella.com/articles/JavaPDF/article.html試試這個代碼和工作對我來說

public boolean generate(File destinationFile) { 
      try { 
       Document document = new Document(); 
       FileOutputStream stream = new FileOutputStream(destinationFile); 
       PdfWriter.getInstance(document, stream); 
       document.open(); 
       addMetaData(document); 

       addTitlePage(document); 
       document.close(); 
       stream.close(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
       return false; 
      } 

      return true; 
     } 


    private Font catFont = new Font(Font.FontFamily.TIMES_ROMAN, 18, 
     Font.BOLD); 
    private Font redFont = new Font(Font.FontFamily.TIMES_ROMAN, 12, 
     Font.NORMAL, BaseColor.RED); 
    private Font subFont = new Font(Font.FontFamily.TIMES_ROMAN, 16, 
     Font.BOLD); 
    private Font smallBold = new Font(Font.FontFamily.TIMES_ROMAN, 12, 
     Font.BOLD); 

private void addTitlePage(Document document) 
     throws DocumentException { 
    Paragraph preface = new Paragraph(); 
    // We add one empty line 
    addEmptyLine(preface, 1); 
    // Lets write a big header 
    preface.add(new Paragraph("Title of the document", catFont)); 

    addEmptyLine(preface, 1); 
    // Will create: Report generated by: _name, _date 
    preface.add(new Paragraph("Report generated by: " + System.getProperty("user.name") + ", " + new Date(), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 
     smallBold)); 
    addEmptyLine(preface, 3); 
    preface.add(new Paragraph("This document describes something which is very important ", 
     smallBold)); 

    addEmptyLine(preface, 8); 

    preface.add(new Paragraph("This document is a preliminary version and not subject to your license agreement or any other agreement with vogella.com ;-).", 
     redFont)); 

    document.add(preface); 
    // Start a new page 
    document.newPage(); 
    } 

我希望它會幫助你