我正在开发一个具有以下要求的Java程序:
如何使用iText实现这样的解决方案?
答案 0 :(得分:5)
- 该应用程序将获取5个输入字段和3个图像(浏览并“附加”到Java应用程序)。
- 完成“表格”后,将使用名为“提交”的按钮提交。
前两个要求不清楚;它们是在Java GUI(AWT?Swing?FX?),某些独立的Web UI(纯HTML?Vaadin?)中实现的,还是在某些派生的UI(Portlet?...)中实现的?
但问题标题“使用带有图像和多页的JAVA(Netbeans)创建PDF ”专注于PDF创建,让我们看看第三和第四个要求。
- 一旦提交,JAVA应用程序将创建一个包含5个输入文本和3个附加图像的PDF文件。
- 我应该可以控制哪个页码。
假设您已经在变量中有这些输入
String text1, text2, text3, text4, text5;
byte[] image1, image2, image3;
使用iText,您现在可以创建如下文档:
import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfWriter;
...
// where you want to create the PDF;
// use a FileOutputStream for creating the PDF in the file system
// use a ByteArrayOutputStream for creating the PDF in a byte[] in memory
OutputStream output = ...;
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, output);
document.open();
// Add content for the first page(s)
...
// Start e new page
document.newPage();
// Add content for the next page(s)
...
// Start a new page
document.newPage();
// etc etc
document.close();
您可以使用
在其中一个Add content for the ... page(s)
部分添加文字
import com.itextpdf.text.Paragraph;
...
document.add(new Paragraph(text1));
您可以使用
在其中一个Add content for the ... page(s)
部分添加图片
import com.itextpdf.text.Image;
...
document.add(Image.getInstance(image1));
如上所述添加文本或图像会将布局细节留给iText,而iText会从上到下填充页面,除了一些边距。
如果您想自己控制内容的定位(这也意味着您必须注意内容部分不重叠或在页面区域之外绘制),您可以这样做:
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.Phrase;
...
PdfContentByte canvas = writer.getDirectContent();
Phrase phrase = new Phrase(text2);
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase, 200, 572, 0);
Image img = Image.getInstance(image2);
img.setAbsolutePosition(200, 200);
canvas.addImage(img);
还有更多选项可以操作您的内容,例如:选择字体,选择文字大小,缩放图像,旋转内容......,只需查看书中的{em> iText in Action - Second Edition 中的iText samples。
答案 1 :(得分:0)
您可以使用 XSL-FO 。基本示例here。在此之后,您可以搜索并添加PDF的其他选项。