我希望以下代码能够使用正确的元数据创建一个空白PDF。相反,我最终得到一个0kb的pdf文件,当然Acrobat将无法打开。我查看了http://www.avajava.com/tutorials/lessons/how-do-i-write-to-a-pdf-file-using-itext.html和http://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");
}
}
答案 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();
}
我希望它能帮到你