我需要创建一个PDF,其中将包含执行状态报告,其中状态将以表格结构显示。是否可以使用PDFBOX API生成pdf表格式?
以下是一些用于创建新PDF文档的示例代码:
import java.awt.Color;
import java.io.IOException;
import org.apache.pdfbox.exceptions.COSVisitorException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
public class HelloWorld
{
/**
* Constructor.
*/
public HelloWorld()
{
super();
}
public static void main(String[] args) throws IOException, COSVisitorException
{
PDDocument doc = null;
try
{
doc = new PDDocument();
PDPage page = new PDPage();
doc.addPage( page );
PDFont font = PDType1Font.COURIER_BOLD_OBLIQUE;
Color color = Color.blue;
PDPageContentStream contentStream = new PDPageContentStream(doc, page);
contentStream.beginText();
contentStream.setFont( font, 12 );
contentStream.setNonStrokingColor(color);
contentStream.moveTextPositionByAmount( 100, 700 );
contentStream.drawString( "message" );
contentStream.setNonStrokingColor(Color.GREEN);
contentStream.drawString( "Hi" );
contentStream.endText();
contentStream.close();
doc.save( "d:\\abc.pdf" );
}
finally
{
if( doc != null )
{
doc.close();
}
}
}
}
试试这个:
public static void drawTable(PDPage page, PDPageContentStream contentStream,
float y, float margin,
String[][] content) throws IOException {
final int rows = content.length;
final int cols = content[0].length;
final float rowHeight = 20f;
final float tableWidth = page.getCropBox().getWidth() - margin - margin;
final float tableHeight = rowHeight * rows;
final float colWidth = tableWidth/(float)cols;
final float cellMargin=5f;
//draw the rows
float nexty = y ;
for (int i = 0; i <= rows; i++) {
contentStream.drawLine(margin, nexty, margin+tableWidth, nexty);
nexty-= rowHeight;
}
//draw the columns
float nextx = margin;
for (int i = 0; i <= cols; i++) {
contentStream.drawLine(nextx, y, nextx, y-tableHeight);
nextx += colWidth;
}
//now add the text
contentStream.setFont( PDType1Font.HELVETICA_BOLD , 12 );
float textx = margin+cellMargin;
float texty = y-15;
for(int i = 0; i < content.length; i++){
for(int j = 0 ; j < content[i].length; j++){
String text = content[i][j];
contentStream.beginText();
contentStream.moveTextPositionByAmount(textx,texty);
contentStream.drawString(text);
contentStream.endText();
textx += colWidth;
}
texty-=rowHeight;
textx = margin+cellMargin;
}
}
只需在main
函数中调用此方法
public static void main(String[] args) throws IOException, COSVisitorException {
PDDocument doc = new PDDocument();
PDPage page = new PDPage();
doc.addPage( page );
PDPageContentStream contentStream = new PDPageContentStream(doc, page);
String[][] content = {
{"Name"," Time "},
{"HTC","01:25"},
{"Samsung Tab2","05:30"}
} ;
drawTable(page, contentStream, 700, 100, content);
contentStream.close();
doc.save("h:\\test.pdf" );
}
null 有人能解释一下,当我使用PdfReader阅读模板后,我如何制作模板的副本吗?有没有办法把表格写到模板副本上,而不是一个新文档上? 为了将来的参考,我做了以下工作:
主要内容:创建一个空的PDF文档,实例现在让我们了解如何使用PDFBox库创建PDF文档。 创建一个空的PDF文档 可以通过实例化类来创建一个空的PDF文档。使用这个类的方法将文档保存在所需的位置。 以下是创建一个空的PDF文档的步骤。 第1步: 创建空白文档 包中的类是PDF文档的内存中表示形式。 因此,通过实例化这个类,可以创建一个空的,如下面的代码块所示。 第2步: 保存文档 创建文档后,需要将此文档保存在所需的路径中,可以使用
现在让我们了解如何使用PDFBox库创建PDF文档。 创建空PDF文档 您可以通过实例化PDDocument类来创建空PDF文档。 您可以使用Save()方法将文档保存在所需的位置。 以下是创建空PDF文档的步骤。 第1步:创建一个空文档 属于包org.apache.pdfbox.pdmodel的PDDocument类是PDFDocument的内存中表示形式。 因此,通过实例化此类,您可以创建一个
想改进这个问题吗?更新问题,使其仅通过编辑这篇文章来关注一个问题。 我有一个PDF文档,有两页。我需要阅读此文档的第一页,并使用阅读内容创建一个新的PDF文档。我将如何使用iText执行此操作?到目前为止,我无法尝试任何事情,因为我真的不知道如何开始。最好的方法是什么?
关于 Adobe PDF 便携文档格式 (PDF) 是一种通用的文件格式,这种文件格式保留在各种应用程序和平台上创建的字体、图像和版面。 Adobe PDF 是对全球使用的电子文档和表单进行安全可靠的分发和交换的标准。 Adobe PDF 文件小而完整,任何使用免费 Adobe Reader® 软件的人都可以对其进行共享、查看和打印。 Adobe PDF 在印刷出版工作流程中非常高效。通过将您的复
我正在开发一个web应用程序,并试图使用它的文本创建一个pdf文档。 当我得到一个路径(本地和服务器上)时,它工作得很好,但我知道我需要在不实际创建它的情况下完成它。 我不想要的:PdfCopy copy=newpdfcopy(documentPDF,newfileoutputstream(mypath)) 我想要的是://PdfCopy copy=new PdfCopy(documentPDF,