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

我希望以下代码使用适当的元数据创建一个空白PDF . 相反,我最终获得了一个0kb的pdf文件,当然Acrobat赢得了't open. I' ve通过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)

2 years ago

您的代码似乎没有任何问题 . 在使用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();
  }

我希望它会对你有所帮助