`
ITCheng
  • 浏览: 75875 次
  • 来自: 北京
社区版块
存档分类
最新评论

java使用IText生成表格到PDF中

    博客分类:
  • Java
 
阅读更多

 

1.生成pdf的表格

package com.me.test;

import java.awt.Color;
import java.io.FileOutputStream;

import com.lowagie.text.Cell;
import com.lowagie.text.Document;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfWriter;

/**
 * 生成表格到硬盘
 * 
 * @author admin
 * 
 */
public class ITextTest {
	public void getTable(){
		try {
			Document document = new Document(PageSize.A4, 20, 20, 20, 20);
			PdfWriter writer = PdfWriter.getInstance(document,
					new FileOutputStream("f:/IText/table.pdf"));
			document.open();

			BaseFont bfChinese;
			bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
					false);
			Font fontChinese = new Font(bfChinese, 9, Font.BOLD, Color.black);

			Table t = new Table(12, 2);
			// t.setBorderColor(new Color(220, 255, 100));
			int width[] = { 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, };
			t.setWidths(width);

			t.setWidth(100); // 占页面宽度 %
			t.setPadding(1);
			t.setSpacing(0);
			t.setBorderWidth(2);

			Cell c1 = new Cell("header1");
			t.addCell(c1);
			c1 = new Cell("Header2");
			t.addCell(c1);
			c1 = new Cell("Header3");
			t.addCell(c1);
			c1 = new Cell("Header4");
			t.addCell(c1);
			c1 = new Cell("Header5");
			t.addCell(c1);
			c1 = new Cell("Header6");
			t.addCell(c1);
			c1 = new Cell("Header7");
			t.addCell(c1);
			c1 = new Cell("Header8");
			t.addCell(c1);
			c1 = new Cell("Header9");
			t.addCell(c1);
			c1 = new Cell("Header10");
			t.addCell(c1);
			c1 = new Cell("Header11");
			t.addCell(c1);
			c1 = new Cell("Header12");
			t.addCell(c1);

			int k = 0;
			while (k < 3) {
				for (int q = 0; q < 12; q++) {
					Paragraph par = new Paragraph(k + "-" + q, fontChinese);
					c1 = new Cell(par);
					c1.setHorizontalAlignment(Element.ALIGN_CENTER);
					t.addCell(c1);
				}
				k++;
			}

			for (int i = 0; i < 24; i++) {
				String num = Integer.toString(i);
				c1.setHorizontalAlignment(Element.ALIGN_CENTER);
				c1 = new Cell(num);
				c1.setColspan(2);
				c1.setRowspan(1);
				t.addCell(c1);
			}
			
			c1 = new Cell("26");
			t.addCell(c1);
			document.add(t);
			// 创建一个新页面
			document.newPage();
			document.add(t);
			document.close();
		} catch (Exception e2) {
			e2.printStackTrace();
		}
		
	}

}

 2.将网页中的信息,用pdf格式文件弹出

package com.me.test;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
/**
 * 在网页上获取信息,查看pdf格式文件
 * @author admin
 *
 */
public class PdfServlet extends HttpServlet {
 
    /**
     * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
     */
    protected void service(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        try {
            // Get the text that will be added to the PDF
            String text = request.getParameter("text");
            if (text == null || text.trim().length() == 0) {
                 text = "You didn't enter any text.";
            }
            // step 1
            Document document = new Document();
            // step 2
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            PdfWriter.getInstance(document, baos);
            // step 3
            document.open();
            // step 4
            document.add(new Paragraph(String.format(
                "You have submitted the following text using the %s method:",
                request.getMethod())));
            document.add(new Paragraph(text));
            // step 5
            document.close();
 
            // setting some response headers
            response.setHeader("Expires", "0");
            response.setHeader("Cache-Control",
                "must-revalidate, post-check=0, pre-check=0");
            response.setHeader("Pragma", "public");
            // setting the content type
            response.setContentType("application/pdf");
            // the contentlength
            response.setContentLength(baos.size());
            // write ByteArrayOutputStream to the ServletOutputStream
            OutputStream os = response.getOutputStream();
            baos.writeTo(os);
            os.flush();
            os.close();
        }
        catch(DocumentException e) {
            throw new IOException(e.getMessage());
        }
    }
 
    /**
     * Serial version UID.
     */
    private static final long serialVersionUID = 6067021675155015602L;
 
}

 3.在网页上直接以pdf的形式显示

package com.me.test;

import java.io.IOException;



import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.PdfWriter;
import com.lowagie.text.Element;
import com.lowagie.text.PageSize;
import com.lowagie.text.pdf.PdfPTable;


/**
 * 直接在网页中生成PDF格式 查看
 */
/**
 * Hello World example as a Servlet.
 *
 * @author blowagie
 */
public class HelloWorldServlet extends HttpServlet {  
    /**
	 * 
	 */
	private static final long serialVersionUID = 3710911016238241119L;

	/**
     * Returns a PDF, RTF or HTML document.
     *
     * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
     */
    public void doGet (HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException {
          System.out.println("document.add(BigTable)");
  // step1
  Document document = new Document(PageSize.A4.rotate(), 10, 10, 10, 10);  //定义纸张类型及方向,页边距
       
        // step 1
       
        try {
            // step 2: we set the ContentType and create an instance of the corresponding Writer
                response.setContentType("application/pdf");
                PdfWriter.getInstance(document, response.getOutputStream());
   // step3
   document.open();
   // step4 定义表格填充内容
   String[] bogusData = { "M0065920", "SL", "FR86000P", "PCGOLD",
     "119000", "96 06", "2001-08-13", "4350", "6011648299",
     "FLFLMTGP", "153", "119000.00" };
   int NumColumns = 12; //定义表格列数



   PdfPTable datatable = new PdfPTable(NumColumns); //创建新表.
   int headerwidths[] = { 9, 4, 8, 10, 8, 11, 9, 7, 9, 10, 4, 10 }; // percentage 定义表格头宽度
   datatable.setWidths(headerwidths);
   datatable.setWidthPercentage(100); // percentage
   datatable.getDefaultCell().setPadding(3);
   datatable.getDefaultCell().setBorderWidth(2);
   datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
   //以下是填充表头
   datatable.addCell("Clock #");
   datatable.addCell("Trans Type");
   datatable.addCell("Cusip");
   datatable.addCell("Long Name");
   datatable.addCell("Quantity");
   datatable.addCell("Fraction Price");
   datatable.addCell("Settle Date");
   datatable.addCell("Portfolio");
   datatable.addCell("ADP Number");
   datatable.addCell("Account ID");
   datatable.addCell("Reg Rep ID");
   datatable.addCell("Amt To Go ");



   datatable.setHeaderRows(1); // this is the end of the table header



   datatable.getDefaultCell().setBorderWidth(1);
   for (int i = 1; i < 750; i++) {
    if (i % 2 == 1) {
     datatable.getDefaultCell().setGrayFill(0.9f);
    }
    for (int x = 0; x < NumColumns; x++) {
     datatable.addCell(bogusData[x]);
    }
    if (i % 2 == 1) {
     datatable.getDefaultCell().setGrayFill(0.0f);
    }
   }
   document.add(datatable);  //加载新表
        }
        catch(DocumentException de) {
            de.printStackTrace();
            System.err.println("document: " + de.getMessage());
        }
       
        // step 5: we close the document (the outputstream is also closed internally)
        document.close();
    }
}

  4.生成PDF到计算机中

package com.me.test;

import java.awt.*;
import java.io.*;

import com.lowagie.text.*;
import com.lowagie.text.Font;
import com.lowagie.text.Image;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfWriter;
/**
 * 通过给定的短语生成pdf文件,并且加密
 */
/**
 * First iText example: Hello World.
 */
public class HelloWorld {

	/** Path to the resulting PDF file. */
	public static final String RESULT = "f:/hello.pdf";
	public static final String pwd = "123456";
	public static final String result = "f:/Itext/b.gif";

	/**
	 * Creates a PDF file: hello.pdf
	 * 
	 * @param args
	 *            no arguments needed
	 */
	public static void main(String[] args) throws DocumentException,
			IOException {
		new HelloWorld().createPdf(RESULT);
	}

	/**
	 * Creates a PDF document.
	 * 
	 * @param filename
	 *            the path to the new PDF document
	 * @throws DocumentException
	 * @throws IOException
	 */
	public void createPdf(String filename) throws DocumentException,
			IOException {
		// 设定文本样式
		Rectangle rec = new Rectangle(PageSize.A4);
		rec.setBackgroundColor(Color.GRAY);
		rec.setBorder(Rectangle.TOP);
		rec.setBorderColor(Color.black);
		rec.setBorderWidth(50);
		// 创建本文
		Document doc = new Document(rec, 100, 201, 20, 20);
		// 设定路径
		PdfWriter pdf = PdfWriter.getInstance(doc, new FileOutputStream(
				HelloWorld.RESULT));
		// 设定布局
		pdf.setViewerPreferences(PdfWriter.PageModeUseThumbs
				| PdfWriter.PageLayoutTwoColumnLeft | PdfWriter.HideMenubar);
		// 加密
		pdf.setEncryption(pwd.getBytes(), pwd.getBytes(), PdfWriter.ALLOW_COPY
				| PdfWriter.ALLOW_PRINTING, PdfWriter.STANDARD_ENCRYPTION_40);
		// 设置中文
		BaseFont base = null;
		Font fontChinese = null;
		try {
			base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
					BaseFont.EMBEDDED);
			fontChinese = new Font(base, 18, Font.BOLD);
		} catch (DocumentException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		doc.open();

		doc.add(new Paragraph("你好我是Pro", fontChinese));

		doc.close();
	}
}

 

分享到:
评论

相关推荐

    java使用itext实现pdf文件下载

    这是使用Itext生成的PDF文档。")); document.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 上述代码会在当前目录下生成一个名为"output.pdf"的PDF文件,内容为"Hello, World! 这是使用...

    itext 生成pdf 目录

    在使用iText生成PDF目录时,要注意几点: - 确保每个书签都有一个对应的目标位置,否则在PDF中点击书签可能无法正确跳转。 - 避免内存泄漏,尤其是在处理大量书签时,要及时释放资源。 - 书签层次不宜过深,以免影响...

    使用iText生成PDF.doc

    首先,构造URL对象获取图片地址,然后使用`document.add(new Jpeg(url))`将其添加到PDF中。需要注意的是,图片必须是PDF支持的格式,例如JPEG、PNG等。 7. **处理网络资源**: 示例中的图片是从网络上获取的,这...

    使用IText生成PDF和WORD文档

    document.add(new Paragraph("这是使用IText生成的PDF文档!")); document.close(); } catch (DocumentException | IOException e) { e.printStackTrace(); } } } ``` 这段代码首先创建了一个`Document`对象...

    java使用itext导出PDF文本绝对定位(实现方法)

    java使用iText导出PDF文本绝对定位(实现方法) iText是一个流行的Java类库,用于生成PDF文档。下面我们将探讨如何使用iText在Java中导出PDF...我们希望本篇文章能够给您一个参考,帮助您更好地使用iText生成PDF文档。

    java使用IText导出PDF(包含图片、表格、文字等等Demo和依赖包)

    `ITextDemo`这个文件可能包含了这样的示例代码,用于展示如何在实际项目中使用IText。运行这个Demo,你应该能得到一个包含文字、图片和表格的完整PDF文件。 在开发过程中,你可能会遇到各种问题,比如字符编码、...

    JAVA使用itextpdf实现HTML转PDF

    对于链接,iTextPDF会将其转换为PDF中的超链接,但可能无法保留原始的HTML锚点。 此外,标签中的"xpdf"通常指的是XPDF工具集,它是一个命令行工具,用于处理PDF文档。虽然本示例未直接使用XPDF,但在某些场景下,如...

    解决Itext生成PDF中文不换行的jar

    为了解决"Java使用Itext生成PDF中文不换行"的问题,我们可以采取以下几种策略: 1. **设置字体和编码**:确保使用支持中文的字体,如SimSun、Arial Unicode MS等,并正确设置PDF的编码为UTF-8。Itext中的`Font`类...

    Java使用iText生成word文件的解决方案

    接下来,我们需要了解如何在Java代码中使用iText来生成Word文件。以下是一个简单的步骤概述: 1. **导入库**:在你的Java文件中,你需要导入必要的iText类。例如: ```java import com.lowagie.text.Document; ...

    java使用itextpdf、itext-asian对pdf文件加水印

    在Java中使用iTextPDF和iText-Asian添加中文水印,你需要完成以下几个步骤: 1. **引入依赖**:在你的项目中,你需要添加iTextPDF和iText-Asian的依赖。如果是Maven项目,可以在pom.xml文件中添加如下依赖: ```xml...

    springboot使用itext生成pdf并保存到本地

    总结一下,要实现在Spring Boot应用中使用iText生成带有页眉、页码、水印、目录和二维码的PDF,你需要: 1. 引入iText及相关库。 2. 创建HTML页面并将其转换为PDF。 3. 定制PDF内容,包括添加页眉、页码和水印。 4. ...

    java通过itext操作pdf模板写入pdf合同数据

    在Java项目中使用iText,需要在项目的Maven配置文件(pom.xml)中添加iText的依赖。在提供的`itext.txt`文件中,可能包含了如何引入iText库到Maven仓库的详细信息。通常,这会是类似以下的代码段: ```xml ...

    Java 使用itext将html转pdf并下载demo

    iText库提供了多种API,可以用来创建PDF文档、添加文本、图像、表格等元素。在HTML到PDF的转换过程中,我们通常会借助一个名为HTMLWorker的类,它能够解析HTML并将其内容转换为PDF格式。 1. **安装iText库**:在...

    itext生成pdf文件-表格

    iText是用Java编写的一个开源库,它提供了丰富的API,使得开发者能够方便地在PDF文件中添加文本、图像、表格、链接等元素。对于生成表格,iText提供了一个名为`PdfPTable`的类,它是表格的核心组件。 创建一个简单...

    使用Java组件itext生成pdf介绍.docx

    ### 使用Java组件itext生成PDF知识点详解 #### 一、前言 在现代企业信息化建设过程中,报表处理占据了举足轻重的地位。特别是在B/S架构系统中,如何高效地生成和展示报表成为了一个亟待解决的问题。Java组件iText...

    Java 使用iText生成word文档,有表格,图片,文本有颜色

    在Java开发中,有时我们需要将数据导出为Word文档,以方便阅读和打印。...通过学习和理解这些代码,你可以快速掌握在Java中使用iText生成Word文档的技巧。记得根据你的项目需求进行适当的修改和优化。

    itextpdf 导出pdf 表格 自动分页中文 目录

    - 写入和关闭:使用`Document`的`add`方法添加表格和目录到PDF中,最后调用`close()`方法关闭文档。 6. **注意事项**: 在处理中文字符时,确保使用的字体库支持中文,例如Arial Unicode MS或者SimSun。另外,为了...

    Java IText生成PDF

    如果你需要在PDF中插入图片,可以使用`Image`类。确保图片是JPEG或PNG格式,因为IText库支持这两种格式: ```java Image image = Image.getInstance("path_to_your_image.jpg"); image.scaleToFit(500f, 300f); // ...

    adobe pdf编辑器 java利用itextpdf根据模板导出pdf配套资源

    5. **复制页面**:使用PdfStamper类从模板PDF中复制页面,并在新PDF上进行操作。PdfStamper提供了一个接口,可以在保留原始内容的同时添加、修改或删除元素。 6. **替换占位符**:遍历模板中的占位符,例如通过...

    使用iText 7 生成pdf

    现在可以开始向PDF中添加内容了。可以使用`doc.add()`方法添加段落、标题、列表等。 ```java doc.add(new Paragraph("Hello, World!")); ``` 4. **设置字体和样式**: iText 7支持多种字体和样式。你可以定义...

Global site tag (gtag.js) - Google Analytics