使用0kb创建.pdf文件,通过iText创建无内容

时间:2013-09-27 14:00:46

标签: java itext

我希望以下代码能够使用正确的元数据创建一个空白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/

我似乎正确地这样做了......但是......不是。

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");
    }
}

1 个答案:

答案 0 :(得分:0)

您的代码似乎没有任何问题。在使用Adobe Reader打开之前,您只需要一些页面,内容在您的pdf中

我也尝试使用此代码,并从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();
  }

我希望它能帮到你