java怎样将网页上面的数据以pdf的格式导出,求代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java怎样将网页上面的数据以pdf的格式导出,求代码相关的知识,希望对你有一定的参考价值。

像这种格式的,导出pdf的格式与页面一样,在线等。。急

参考技术A 需要用到一个pdf的jar包,去网上下载一个itextpdf.jar。导出pdf的格式都是需要自己用代码实现的,每一行 ,每一个列是什么格式,都需要自己写出来,是不能够自动生成的,反正很麻烦。我做的一个导出成pdf特定格式的东西,写了好几千行代码。相当头痛。
package com.dw.mqs.export;

import java.awt.Color;
import java.io.ByteArrayOutputStream;
import java.math.BigDecimal;
import java.net.URL;
import java.util.Date;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.Set;

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

import com.dw.file.WebHelper;
import com.dw.mqs.MqsManager;
import com.dw.mqs.MqsUtilNew;
import com.dw.mqs.ProductItem;
import com.dw.mqs.ProjectBasicItem;
import com.dw.mqs.ProjectConfDetailItem;
import com.dw.mqs.ProjectConfVerItem;
import com.dw.mqs.ProjectConfig;
import com.dw.mqs.ProjectService;
import com.dw.mqs.Util;
import com.dw.system.Convert;
import com.dw.system.gdb.DBResult;
import com.dw.system.gdb.DataRow;
import com.dw.system.gdb.GDB;
import com.dw.user.User;
import com.dw.user.UserManager;
import com.dw.user.UserProfile;
import com.lowagie.text.Document;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.Image;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;

public class PdfService

Document document = new Document(PageSize.A4.rotate(), 50, 50, 50, 50);
ByteArrayOutputStream os = new ByteArrayOutputStream();
PdfWriter pdf = PdfWriter.getInstance(document, os);
Rectangle rect = new Rectangle(36, 54, 559, 788);
pdf.setBoxSize("art", rect);
pdf.setPageEvent(new TableHeader());
document.open();

BaseFont baseArialuni = BaseFont.createFont("res/ARIALUNI.TTF",
BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); // Arial
// unicode字体
Font fontCN = new Font(baseArialuni, 9, Font.NORMAL, Color.BLACK);
Font fontCN8b = new Font(baseArialuni, 9, Font.BOLD, Color.BLACK);
Font fontCN12b = new Font(baseArialuni, 12, Font.BOLD, Color.BLACK);
Font fontCN9b = new Font(baseArialuni, 10, Font.BOLD, Color.BLACK);
Font fontCN9 = new Font(baseArialuni, 10, Font.NORMAL, Color.BLACK);
Font fontCN9b_blue = new Font(baseArialuni, 10, Font.BOLD, Color.BLUE);

PdfPTable table = null;

PdfPCell cell = null;
table = new PdfPTable(relativeWidths);
table.setWidthPercentage(100);
cell = new PdfPCell(new Paragraph(tit + "标题", fontCN12b));
cell.setColspan(root ? 12 : 10);
cell.setHorizontalAlignment(Element.ALIGN_CENTER); // 水平居中
cell.setVerticalAlignment(Element.ALIGN_MIDDLE); // 垂直居中
cell.setBorder(Rectangle.NO_BORDER);
table.addCell(cell);

追问

那每个页面都要自己手写导出pdf代码,是不是太烦了啊!还有使用itextpdf加页眉页脚怎么搞啊!求大师帮忙啊

追答

页眉页脚没有弄过。我觉得主要就是布局的问题吧,pdf其实就是一个没有任何格式的空白界面。里面的东西都得你自己实现,你不需要的页面和页脚都抽出来,写成两个方法,然后在插入到每页里面

本回答被提问者和网友采纳
参考技术B java操作pdf咯,有外部插件支持的咯,

使用 FPDF 将网页导出为 PDF

【中文标题】使用 FPDF 将网页导出为 PDF【英文标题】:Export a web-page to a PDF with FPDF 【发布时间】:2013-01-03 03:13:15 【问题描述】:

有一个(希望是)简单​​答案的复杂问题。

我正在研究 FPDF 以将网页导出为 PDF。该网页已针对打印媒体进行了格式化,但由于打印媒体可能与 CSS/HTML 呈现的对象有点不一致,我希望导出为 PDF 然后打印会减少设计上的麻烦。

我浏览了 FPDF 网站,但没有看到我希望看到的功能。某种include() 函数。我看到一堆关于格式化内容的行,我希望这意味着

我是不是想太多了?我可以在 FPDF 构造函数之后简单地使用include(),然后将其中的任何内容与页面一起打印吗?

【问题讨论】:

【参考方案1】:

FPDF 库并非用于将 HTML 标记直接呈现为 PDF。

如果您希望这样做,您可以尝试专门为此目的设计的解决方案之一。例如,html2pdf library,除其他外,它基于 FPDF 库。您也可以考虑使用像DocRaptor 这样的外部API,这是基于非常昂贵的Prince XML 程序的一种经济高效的解决方案。

【讨论】:

html2pdf 是我们最终采用的解决方案,适用于任何研究此问题的人。它更喜欢使用不理想但易于管理的表格进行布局。

以上是关于java怎样将网页上面的数据以pdf的格式导出,求代码的主要内容,如果未能解决你的问题,请参考以下文章

.net怎样在网页中打开pdf格式文件,不允许下载,只能在网页中浏览,求大神

使用 FPDF 将网页导出为 PDF

有没有可以上传PDF文件的网址

Java问题: 怎么样将网页上的数据导入到excel中并下载下来,求,详细源码参考,谢谢

Adobe acrobat pro怎样将网页转成PDF

怎样将PDF中的文本导出