0

次のコードで、適切なメタデータを含む空白の PDF が作成されると思います。代わりに、もちろんAcrobatが開かない0kbのpdfファイルになってしまいます。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");
    }
}
4

1 に答える 1

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

お役に立てば幸いです

于 2013-09-27T15:20:51.900 に答える