【发布时间】:2015-02-17 15:03:14
【问题描述】:
我没有使用 iText 的丰富经验,我有以下问题。
我必须将 Phrase(一个简单的字符串,我认为在我的情况下也可以使用 Chunk)垂直放入页面。
所以我按照 iText 官方文档中的本教程进行操作:http://itextpdf.com/examples/iia.php?id=202
这是我的代码:
private static void printPdf() {
/** The resulting PDF file: */
String result = "D:/MYCOMPANY/massive_pdf_print.pdf";
// STEP 1 Creazione del documento in formato A4 e senza margini:
com.itextpdf.text.Document document = new com.itextpdf.text.Document(com.itextpdf.text.PageSize.A4, 0, 0, 0, 0);
try {
/* STEP 2 Constructs a PdfWriter.
document: The PdfDocument that has to be written.
os: The OutputStream the writer has to write to
*/
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(result));
// STEP 3:
document.open();
// STEP 4:
//document.add(new Paragraph("Hello World!"));
VerticalText vt = new VerticalText(writer.getDirectContent());
vt.addText(new Phrase("Hello World !!!"));
vt.go();
// STEP 5:
document.close();
}catch (DocumentException ex){
ex.printStackTrace();
}
catch (IOException ex){
ex.printStackTrace();
}
}
好的,问题是当尝试执行这一行时:
document.close();
抛出以下异常:
Exception in thread "main" ExceptionConverter: java.io.IOException: The document has no pages.
at com.itextpdf.text.pdf.PdfPages.writePageTree(PdfPages.java:113)
at com.itextpdf.text.pdf.PdfWriter.close(PdfWriter.java:1217)
at com.itextpdf.text.pdf.PdfDocument.close(PdfDocument.java:777)
at com.itextpdf.text.Document.close(Document.java:398)
at mainPkg.Main.printPdf(Main.java:123)
at mainPkg.Main.main(Main.java:78)
Process finished with exit code 1
为什么?我错过了什么?我该如何解决这个问题并垂直打印我的“Hello World !!!”字符串?
编辑 1:
这是我在修改插入代码后看到生成的 PDF 的方式:
vt.setVerticalLayout(390, 570, 540, 12, 30);
如您所见,文本未垂直对齐,但似乎与边距水平对齐。为什么?我错过了什么?
Tnx
【问题讨论】:
标签: java pdf pdf-generation itext