iText PDF编写器Java奇怪的问题
在使用java处理iText 5.1.3 PDF库时,我遇到了一个奇怪的问题。当我使用main方法运行代码并生成PDF时,我的代码工作正常,但当我在需要下载PDF的web应用程序中使用相同的函数时,前端会显示异常iText PDF编写器Java奇怪的问题,java,itext,Java,Itext,在使用java处理iText 5.1.3 PDF库时,我遇到了一个奇怪的问题。当我使用main方法运行代码并生成PDF时,我的代码工作正常,但当我在需要下载PDF的web应用程序中使用相同的函数时,前端会显示异常 HTTP Status 500 - Dispatch[/Invoice] to method funcName returned an exception 但它不会在控制台上打印任何异常。 这是我的代码,任何人都可以查看我的代码并解释代码的问题 import com.ilex.inv
HTTP Status 500 - Dispatch[/Invoice] to method funcName returned an exception
但它不会在控制台上打印任何异常。
这是我的代码,任何人都可以查看我的代码并解释代码的问题
import com.ilex.invoice.reporting.common.IlexReportPDFConstants;
import com.ilex.report.pdf.helper.PDFUtils;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.html.WebColors;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.commons.io.IOUtils;
public class SimpleTable {
public static final String DEST = "results/tables/simple_table.pdf";
public static void main(String[] args) throws IOException, DocumentException, Exception {
File file = new File(DEST);
file.getParentFile().mkdirs();
new SimpleTable().createPdf(DEST);
new SimpleTable().generateInvPDF();
}
public void createPdf(String dest) throws IOException, DocumentException, Exception {
Document document = new Document(PageSize.A4.rotate(),
IlexReportPDFConstants.PAGE_LEFT_MARGIN, IlexReportPDFConstants.PAGE_TOP_MARGIN, IlexReportPDFConstants.PAGE_RIGHT_MARGIN,
IlexReportPDFConstants.PAGE_BOTTOM_MARGIN);
PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
PdfPTable table = new PdfPTable(76);
table = populateHeader(table);
for (int aw = 0; aw < 150 * 76; aw++) {
table.addCell(getNormalCell("Some Text Here", 1.5f));
}
table.setTotalWidth(800f);
table.setLockedWidth(true);
document.add(table);
document.close();
}
public static PdfPCell getNormalCell(String string, float size)
throws DocumentException, IOException {
if (string != null && "".equals(string)) {
return new PdfPCell();
}
Font f = new Font();
f.setColor(BaseColor.BLACK);
f.setSize(size);
f.setStyle("normal");
PdfPCell cell = new PdfPCell(new Phrase(string, f));
cell.setNoWrap(false);
cell.setBorderWidth(0.1f);
return cell;
}
public static PdfPCell getHeaderCell(String string, float size)
throws DocumentException, IOException {
Font f = new Font();
f.setSize(size);
PdfPCell cell = new PdfPCell(new Phrase(string, f));
cell.setNoWrap(false);
BaseColor myColor = WebColors.getRGBColor("#D3D3D3");
cell.setBackgroundColor(myColor);
cell.setBorderWidth(0.1f);
return cell;
}
PdfPTable populateHeader(PdfPTable table) throws Exception {
table.addCell(getHeaderCell("Invoice #", 1.8f));
table.addCell(getHeaderCell("Approved Date", 1.8f));
table.addCell(getHeaderCell("PO#", 1.8f));
table.addCell(getHeaderCell("Partner", 1.8f));
table.addCell(getHeaderCell("Category", 1.8f));
table.addCell(getHeaderCell("Comcast Vendor ID", 1.8f));
table.addCell(getHeaderCell("Comcast Site Code", 1.8f));
table.addCell(getHeaderCell("Authorized", 1.8f));
table.addCell(getHeaderCell("Invoiced", 1.8f));
table.addCell(getHeaderCell("Approved", 1.8f));
table.addCell(getHeaderCell("Customer", 1.8f));
table.addCell(getHeaderCell("Project", 1.8f));
table.addCell(getHeaderCell("Job", 1.8f));
table.addCell(getHeaderCell("Site", 1.8f));
table.addCell(getHeaderCell("Job Complete", 1.8f));
table.addCell(getHeaderCell("First onsite", 1.8f));
table.addCell(getHeaderCell("Last offsite", 1.8f));
table.addCell(getHeaderCell("PO Complete", 1.8f));
table.addCell(getHeaderCell("PM", 1.8f));
table.addCell(getHeaderCell("Owner", 1.8f));
table.addCell(getHeaderCell("Partner / Invoice", 1.8f));
table.addCell(getHeaderCell("Dup Inv check", 1.8f));
table.addCell(getHeaderCell("Dup PO Number", 1.8f));
table.addCell(getHeaderCell("Layout code", 1.8f));
table.addCell(getHeaderCell("Source Name", 1.8f));
table.addCell(getHeaderCell("Invoice Type", 1.8f));
table.addCell(getHeaderCell("operating Unit", 1.8f));
table.addCell(getHeaderCell("Vendor Number", 1.8f));
table.addCell(getHeaderCell("Vendor Site Code", 1.8f));
table.addCell(getHeaderCell("Invoice Num", 1.8f));
table.addCell(getHeaderCell("Invoice Date", 1.8f));
table.addCell(getHeaderCell("Currency Code", 1.8f));
table.addCell(getHeaderCell("Invoice Amount", 1.8f));
table.addCell(getHeaderCell("Invoice H Desc", 1.8f));
table.addCell(getHeaderCell("Pay Group", 1.8f));
table.addCell(getHeaderCell("Invoice Line Type", 1.8f));
table.addCell(getHeaderCell("Invoice Line Number", 1.8f));
table.addCell(getHeaderCell("Inv L Description", 1.8f));
table.addCell(getHeaderCell("Inv Line Amount", 1.8f));
table.addCell(getHeaderCell("Tax Code", 1.8f));
table.addCell(getHeaderCell("Concatenated Distr Acct", 1.8f));
table.addCell(getHeaderCell("Source Sys Ref", 1.8f));
table.addCell(getHeaderCell("H Attribute3", 1.8f));
table.addCell(getHeaderCell("H Attribute4", 1.8f));
table.addCell(getHeaderCell("H Attribute5", 1.8f));
table.addCell(getHeaderCell("H Attribute6", 1.8f));
table.addCell(getHeaderCell("H Attribut7", 1.8f));
table.addCell(getHeaderCell("H Attribute8", 1.8f));
table.addCell(getHeaderCell("H Attribute9", 1.8f));
table.addCell(getHeaderCell("H Attribut10", 1.8f));
table.addCell(getHeaderCell("H Attribute11", 1.8f));
table.addCell(getHeaderCell("H Attribute12", 1.8f));
table.addCell(getHeaderCell("H Attribute13", 1.8f));
table.addCell(getHeaderCell("H Attribute14", 1.8f));
table.addCell(getHeaderCell("H Attribute15", 1.8f));
table.addCell(getHeaderCell("L Attribute1", 1.8f));
table.addCell(getHeaderCell("L Attribute2", 1.8f));
table.addCell(getHeaderCell("L Attribute3", 1.8f));
table.addCell(getHeaderCell("L Attribute4", 1.8f));
table.addCell(getHeaderCell("L Attribute5", 1.8f));
table.addCell(getHeaderCell("L Attribute6", 1.8f));
table.addCell(getHeaderCell("L Attribute7", 1.8f));
table.addCell(getHeaderCell("L Attribute8", 1.8f));
table.addCell(getHeaderCell("L Attribute9", 1.8f));
table.addCell(getHeaderCell("L Attribute10", 1.8f));
table.addCell(getHeaderCell("L Attribute11", 1.8f));
table.addCell(getHeaderCell("L Attribute12", 1.8f));
table.addCell(getHeaderCell("L Attribute13", 1.8f));
table.addCell(getHeaderCell("L Attribute14", 1.8f));
table.addCell(getHeaderCell("L Attribute15", 1.8f));
table.addCell(getHeaderCell("H Attr Category", 1.8f));
table.addCell(getHeaderCell("L Attr Category", 1.8f));
table.addCell(getHeaderCell("H Terms Date", 1.8f));
table.addCell(getHeaderCell("H Terms Name", 1.8f));
table.addCell(getHeaderCell("H Attribute1", 1.8f));
table.addCell(getHeaderCell("H Legal Entity Name", 1.8f));
return table;
}
/*
* public static void main(String[] args) { try { float indentationLeft = 20f; float indentationLeftTemp = 20f; List prtLst = new List(List.UNORDERED);
* prtLst.setListSymbol("\u2022"); prtLst.add("P1"); prtLst.setListSymbol("+"); prtLst.add("P2"); prtLst.setListSymbol("\u2022"); List prevList = prtLst; for (int i =
* 0; i < 500; i++) { List chldLst2 = new List(List.UNORDERED); chldLst2.setIndentationLeft(indentationLeft); indentationLeftTemp += 20f;
* chldLst2.setListSymbol("\u2022"); chldLst2.add("YY" + i); prevList.add(chldLst2); prevList = chldLst2; } prtLst.add("P3");
*
* Document d = null; if (indentationLeftTemp > 400f) { Rectangle pageSize = new Rectangle(indentationLeftTemp + 200f, indentationLeftTemp + 200f); d = new
* Document(pageSize); } else { d = new Document(); } PdfWriter.getInstance(d, new FileOutputStream("D:/test.pdf")); d.open(); d.add(prtLst); d.close(); } catch
* (Exception e) { e.printStackTrace(); } }
*
*/
private byte[] generateInvPDF() {
File tempFile = PDFUtils.getTempFile();
Document document = null;
OutputStream pdfOut = null;
InputStream pdfIn = null;
try {
//IlexReportPDFConstants.PAGE_SIZE
document = new Document(PageSize.A4.rotate(),
IlexReportPDFConstants.PAGE_LEFT_MARGIN, IlexReportPDFConstants.PAGE_TOP_MARGIN, IlexReportPDFConstants.PAGE_RIGHT_MARGIN,
IlexReportPDFConstants.PAGE_BOTTOM_MARGIN);
pdfOut = new FileOutputStream(tempFile);
PdfWriter writer = PdfWriter.getInstance(document, pdfOut);
document.open();
document.add(new Chunk(""));
PdfPTable table = new PdfPTable(76);
table = populateHeader(table);
for (int aw = 0; aw < 150 * 76; aw++) {
table.addCell(getNormalCell("Some Text Here", 1.5f));
}
table.setTotalWidth(800f);
table.setLockedWidth(true);
// PdfAction action = PdfAction.gotoLocalPage(1, new PdfDestination(PdfDestination.FIT, 0, 10000, 1), writer);
// writer.setOpenAction(action);
writer.setViewerPreferences(PdfWriter.FitWindow | PdfWriter.CenterWindow);
document.add(table);
document.close();
pdfIn = new FileInputStream(tempFile);
return IOUtils.toByteArray(pdfIn);
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (document != null) {
try {
document.close();
} catch (Exception e) {
e.printStackTrace();
}
}
IOUtils.closeQuietly(pdfOut);
IOUtils.closeQuietly(pdfIn);
try {
if (tempFile.exists()) {
tempFile.delete();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
}
import com.ilex.invoice.reporting.common.IlexReportPDFConstants;
导入com.ilex.report.pdf.helper.pdls;
导入com.itextpdf.text.BaseColor;
导入com.itextpdf.text.Chunk;
导入com.itextpdf.text.Document;
导入com.itextpdf.text.DocumentException;
导入com.itextpdf.text.Font;
导入com.itextpdf.text.PageSize;
导入com.itextpdf.text.Phrase;
导入com.itextpdf.text.html.WebColors;
导入com.itextpdf.text.pdf.PdfPCell;
导入com.itextpdf.text.pdf.PdfPTable;
导入com.itextpdf.text.pdf.PdfWriter;
导入java.io.File;
导入java.io.FileInputStream;
导入java.io.FileOutputStream;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.OutputStream;
导入org.apache.commons.io.IOUtils;
公共类可简化{
公共静态最终字符串DEST=“results/tables/simple_table.pdf”;
公共静态void main(字符串[]args)引发IOException、DocumentException、Exception{
文件文件=新文件(DEST);
文件.getParentFile().mkdirs();
新建SimpleTable().createPdf(DEST);
新建SimpleTable().generateInvPDF();
}
public void createPdf(String dest)抛出IOException、DocumentException、Exception{
文档=新文档(PageSize.A4.rotate(),
IlexReportPDFConstants.PAGE\左\页边距,IlexReportPDFConstants.PAGE\上\页边距,IlexReportPDFConstants.PAGE\右\页边距,
IlexReportPDFConstants.PAGE_底部_页边空白);
getInstance(文档,新文件输出流(dest));
document.open();
PdfPTable=新的PdfPTable(76);
table=populateHeader(表格);
用于(int aw=0;aw<150*76;aw++){
table.addCell(getNormalCell(“此处的一些文本”,1.5f));
}
表.设置总宽度(800f);
表2.setLockedWidth(真);
文件。添加(表);
document.close();
}
公共静态PdfPCell getNormalCell(字符串、浮点大小)
抛出DocumentException,IOException{
if(string!=null&“.equals(string)){
返回新的PdfPCell();
}
Font f=新字体();
f、 setColor(基色。黑色);
f、 设置大小(大小);
f、 设置样式(“正常”);
PdfPCell cell=新的PdfPCell(新短语(字符串,f));
cell.setNoWrap(假);
单元宽度(0.1f);
返回单元;
}
公共静态PdfPCell getHeaderCell(字符串、浮点大小)
抛出DocumentException,IOException{
Font f=新字体();
f、 设置大小(大小);
PdfPCell cell=新的PdfPCell(新短语(字符串,f));
cell.setNoWrap(假);
BaseColor myColor=WebColors.getRGBColor(“#d3d3”);
细胞背景色(myColor);
单元宽度(0.1f);
返回单元;
}
PdfPTable populateHeader(PdfPTable表)引发异常{
表.addCell(getHeaderCell(“发票”),1.8f);
表1.addCell(getHeaderCell(“批准日期”,1.8f));
表1.addCell(getHeaderCell(“PO#”),1.8f);
表1.addCell(getHeaderCell(“合作伙伴”,1.8f));
表1.addCell(getHeaderCell(“类别”,1.8f));
表1.addCell(getHeaderCell(“Comcast供应商ID”,1.8f));
表1.addCell(getHeaderCell(“康卡斯特现场代码”,1.8f));
表1.addCell(getHeaderCell(“授权”,1.8f));
表1.addCell(getHeaderCell(“发票”,1.8f));
表1.addCell(getHeaderCell(“批准”,1.8f));
表1.addCell(getHeaderCell(“客户”,1.8f));
表1.addCell(getHeaderCell(“项目”,1.8f));
表1.addCell(getHeaderCell(“作业”,1.8f));
表1.addCell(getHeaderCell(“现场”,1.8f));
表.addCell(getHeaderCell(“作业完成”,1.8f));
表1.addCell(getHeaderCell(“第一现场”,1.8f));
表1.addCell(getHeaderCell(“最后一个场外”,1.8f));
表1.addCell(getHeaderCell(“采购订单完成”,1.8f));
表1.addCell(getHeaderCell(“PM”,1.8f));
表1.addCell(getHeaderCell(“所有者”,1.8f));
表1.addCell(getHeaderCell(“合作伙伴/发票”,1.8f));
表1.addCell(getHeaderCell(“Dup Inv检查”,1.8f));
表1.addCell(getHeaderCell(“Dup采购订单编号”,1.8f));
表1.addCell(getHeaderCell(“布局代码”,1.8f));
表.addCell(getHeaderCell(“源名称”,1.8f));
表1.addCell(getHeaderCell(“发票类型”,1.8f));
表1.addCell(getHeaderCell(“操作单元”,1.8f));
表1.addCell(getHeaderCell(“供应商编号”,1.8f));
表1.addCell(getHeaderCell(“供应商现场代码”,1.8f));
表.addCell(getHeaderCell(“发票编号”,1.8f));
表.addCell(getHeaderCell(“发票日期”,1.8f));
表.addCell(getHeaderCell(“货币代码”,1.8f));
表.addCell(getHeaderCell(“发票金额”,1.8f));
表1.addCell(getHeaderCell(“发票H说明”,1.8f));
表1.addCell(getHeaderCell(“支付组”,1.8f));
表.addCell(getHeaderCell(“发票行类型”,1.8f));
表.addCell(getHeaderCell(“发票行号”,1.8f));
表1.addCell(getHeaderCell(“投资说明”,1.8f));
表1.addCell(getHeaderCell(“投资行金额”,1.8f));
表1.addCell(getHeaderCell(“税务代码”,1.8f));
表1.addCell(getHeaderCell(“串联发行账户”,1.8f));
表1.addCell(getHeaderCell(“源系统参考”,1.8f));
表1.addCell(getHeaderCell(“H属性3”,1.8f));
表1.addCell(getHeaderCell(“H属性4”,1.8f));