一 . 准备maven依赖
<dependency><groupId>org.xhtmlrenderer</groupId><artifactId>flying-saucer-pdf-itext5</artifactId><version>9.0.3</version></dependency><dependency><groupId>org.xhtmlrenderer</groupId><artifactId>flying-saucer-core</artifactId><version>9.0.3</version>
</dependency>
二,正式代码
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import javafx.scene.control.Cell;
import org.junit.Test;import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;public class PDFDome {public static void main(String[] args) {String font="HH-mm-ss";String simpleDateFormat=new SimpleDateFormat(font).format(new Date());String path="D:\\PDF测试\\"+simpleDateFormat+".pdf";try {//创建文件Document document=new Document();//设置文档格式为A4纸  宽595f  高842fdocument.setPageSize(PageSize.A4);//建立书写器PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(path));//设置页眉页脚PDFPrintEventHelper007 pdfPrintEventHelper007=new PDFPrintEventHelper007();writer.setPageEvent(pdfPrintEventHelper007);//打开文档document.open();//设置中文字体BaseFont baseChinese=BaseFont.createFont("C:/WINDOWS/Fonts/simhei.ttf", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);Font tailContxet=new Font(baseChinese,18,Font.BOLD);// 大标题 字体大小18 加粗Font context=new Font(baseChinese,10,Font.NORMAL); //正文内容 字体大小 10Font smallTail=new Font(baseChinese,11,Font.BOLD);//小标题 字体大小11 加粗Font line=new Font(baseChinese,10,Font.UNDERLINE);// 字体大小10 字体加下划线// 蓝色字体Font blueFont = new Font(baseChinese);blueFont.setColor(BaseColor.BLUE);blueFont.setSize(5);// 小三号Font smallThreeFont = new Font(baseChinese, 15);smallThreeFont.setColor(BaseColor.BLACK);// 五号Font fiveFont = new Font(baseChinese);fiveFont.setColor(BaseColor.BLACK);fiveFont.setSize(10.5f);// 五号Font smallFiveFont = new Font(baseChinese);smallFiveFont.setColor(BaseColor.BLACK);smallFiveFont.setSize(9);// 五号Font smallSixFont = new Font(baseChinese);smallSixFont.setColor(BaseColor.BLACK);smallSixFont.setSize(6.5f);// 小四号 加粗Font greenFont = new Font(baseChinese, 12, Font.BOLD);greenFont.setColor(BaseColor.BLACK);// 小四号Font messFont = new Font(baseChinese, 12);messFont.setColor(BaseColor.BLACK);// 标题加粗 四号Font titleFont = new Font(baseChinese, 14, Font.BOLD);titleFont.setColor(BaseColor.BLACK);//大标题//Paragraph 代表 段落Paragraph paragraph=new Paragraph("投保人财务补充问卷",tailContxet);paragraph.setAlignment(Element.ALIGN_CENTER);paragraph.setSpacingBefore(20);document.add(paragraph);Paragraph paragraph1=new Paragraph("(电销渠道专用)",tailContxet);paragraph1.setAlignment(Element.ALIGN_CENTER);paragraph1.setSpacingBefore(5f);paragraph1.setSpacingAfter(10F);document.add(paragraph1);//在一行数据中分成三个模块float[] floats={100f,120f,120f};//代表列PdfPCell cells;//在一行中当你的内容需要拼接时候你需要用Chunk拼接,加入到Paragraph中,// 然后加入到PdfPCell,最后放入到PdfPTable,然后加入Document中PdfPTable pdfPTable=new PdfPTable(floats);//这里需要注意的是table自带边框,如果不需要的话可以在cell设置setBorder为0//Chunk 代表块//第一个模块Chunk chunk=new Chunk("投保人命名:" ,context);Chunk chunk1=new Chunk("Tom",line);Paragraph paragraph2=new Paragraph();paragraph2.add(chunk);paragraph2.add(chunk1);cells=new PdfPCell(paragraph2);cells.setColspan(1);cells.setBorder(0); //无边框cells.setHorizontalAlignment(Element.ALIGN_LEFT);//设置内容靠左对齐cells.setVerticalAlignment(Element.ALIGN_MIDDLE);//设置内容垂直居中显示pdfPTable.addCell(cells);//第二个模块Chunk c003 = new Chunk("投保单编号:", context);Chunk c004 = new Chunk("123465465", line);Paragraph p002 = new Paragraph();p002.add(c003);p002.add(c004);cells = new PdfPCell(p002);cells.setColspan(1);cells.setBorder(0);// 设置单元格无边框cells.setHorizontalAlignment(Element.ALIGN_LEFT);// 设置内容水平左对齐显示cells.setVerticalAlignment(Element.ALIGN_MIDDLE);// 设置内容垂直居中显示pdfPTable.addCell(cells);//第三个模块Chunk c005 = new Chunk("见证营销员姓名:", context);Chunk c006 = new Chunk("Som", line);Paragraph p003 = new Paragraph();p003.add(c005);p003.add(c006);cells = new PdfPCell(p003);cells.setColspan(1);cells.setBorder(0);// 设置单元格无边框cells.setHorizontalAlignment(Element.ALIGN_LEFT);// 设置内容水平左对齐显示cells.setVerticalAlignment(Element.ALIGN_MIDDLE);// 设置内容垂直居中显示pdfPTable.addCell(cells);document.add(pdfPTable);// 设计一个4列的表.PdfPTable tables = new PdfPTable(4);tables.setWidthPercentage(100); // 宽度100%填充tables.setSpacingBefore(10f); // 前间距tables.setSpacingAfter(10f); // 后间距// 设置列宽float[] columnWidths = { 0.8f,0.8f,0.5f,0.5f};tables.setWidths(columnWidths);PdfPCell cell1;//第一行cell1 = new PdfPCell(new Phrase("", smallThreeFont));cell1.setMinimumHeight(20); // 设置单元格高度cell1.setUseAscender(true); // 设置可以居中cell1.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell1.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中cell1.setBorder(0);tables.addCell(cell1);cell1 = new PdfPCell(new Phrase("记    账    凭    证", smallThreeFont));cell1.setMinimumHeight(20); // 设置单元格高度cell1.setUseAscender(true); // 设置可以居中cell1.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell1.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中cell1.setBorderWidthTop(0);cell1.setBorderWidthLeft(0);cell1.setBorderWidthRight(0);tables.addCell(cell1);cell1 = new PdfPCell(new Phrase("本位币:CYN", fiveFont));cell1.setMinimumHeight(20); // 设置单元格高度cell1.setUseAscender(true); // 设置可以居中cell1.setHorizontalAlignment(Element.ALIGN_RIGHT); // 设置水平居中cell1.setVerticalAlignment(Element.ALIGN_BOTTOM); // 设置垂直居中cell1.setBorder(0);//设置为2代表这个单元格合并两个单元格cell1.setColspan(2);tables.addCell(cell1);// start  这部分代码是样例上的一条断横线----------------------------cell1 = new PdfPCell(new Phrase("", fiveFont));cell1.setMinimumHeight(2); // 设置单元格高度cell1.setUseAscender(true); // 设置可以居中cell1.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell1.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中cell1.setBorder(0);tables.addCell(cell1);cell1 = new PdfPCell(new Phrase("", fiveFont));cell1.setMinimumHeight(2); // 设置单元格高度cell1.setUseAscender(true); // 设置可以居中cell1.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell1.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中cell1.setBorderWidthTop(0);cell1.setBorderWidthLeft(0);cell1.setBorderWidthRight(0);tables.addCell(cell1);cell1 = new PdfPCell(new Phrase("", fiveFont));cell1.setMinimumHeight(2); // 设置单元格高度cell1.setUseAscender(true); // 设置可以居中cell1.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell1.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中cell1.setBorder(0);cell1.setColspan(2);tables.addCell(cell1);//end---------------------------------//第二行cell1 = new PdfPCell(new Phrase("", fiveFont));cell1.setMinimumHeight(20); // 设置单元格高度cell1.setUseAscender(true); // 设置可以居中cell1.setHorizontalAlignment(Element.ALIGN_LEFT); // 设置水平居中cell1.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中cell1.setBorder(0);tables.addCell(cell1);cell1 = new PdfPCell(new Phrase("XXX公司职业年金计划", fiveFont));cell1.setMinimumHeight(20); // 设置单元格高度cell1.setUseAscender(true); // 设置可以居中cell1.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell1.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中cell1.setBorder(0);tables.addCell(cell1);cell1 = new PdfPCell(new Phrase("附单据数:0张", fiveFont));cell1.setMinimumHeight(20); // 设置单元格高度cell1.setUseAscender(true); // 设置可以居中cell1.setHorizontalAlignment(Element.ALIGN_RIGHT); // 设置水平居中cell1.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中cell1.setColspan(2);cell1.setBorder(0);tables.addCell(cell1);//第三行cell1 = new PdfPCell(new Phrase("", fiveFont));cell1.setMinimumHeight(20); // 设置单元格高度cell1.setUseAscender(true); // 设置可以居中cell1.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell1.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中cell1.setBorder(0);tables.addCell(cell1);cell1 = new PdfPCell(new Phrase("凭证日期:XXXX年XX月XX日", fiveFont));cell1.setMinimumHeight(20); // 设置单元格高度cell1.setUseAscender(true); // 设置可以居中cell1.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell1.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中cell1.setBorder(0);tables.addCell(cell1);cell1 = new PdfPCell(new Phrase("凭证编号:XXXXX号", fiveFont));cell1.setMinimumHeight(20); // 设置单元格高度cell1.setUseAscender(true); // 设置可以居中cell1.setHorizontalAlignment(Element.ALIGN_RIGHT); // 设置水平居中cell1.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中cell1.setBorder(0);cell1.setColspan(2);tables.addCell(cell1);document.add(tables);// 设计一个4列的表.// PdfPTable自带边框PdfPTable table = new PdfPTable(2);table.setWidthPercentage(100); // 宽度100%填充table.setSpacingBefore(10f); // 前间距table.setSpacingAfter(10f); // 后间距/*** 设置表格*/// 设置列宽float[] columnWidth = { 80, 60};table.setWidths(columnWidth);PdfPTable table0 = new PdfPTable(3);//这里需要注意的是你的table为3时下面使用cell就必须是3的倍数,这样再分配的时候才会平均分table0.setWidthPercentage(100); // 宽度100%填充// 设置列宽float[] columnWidths0 = {0.8f,0.8f,0.8f};table0.setWidths(columnWidths0);PdfPCell cell0;//正文第1行cell0 = new PdfPCell(new Phrase("摘要", fiveFont));cell0.setMinimumHeight(28); // 设置单元格高度cell0.setUseAscender(true); // 设置可以居中cell0.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell0.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中/*** setRowspan的作用是设置平分你第一行的单元格。这里需要注意的时你setRowspan里面的值,*  在你显示的第一行必须全部设置为一样的,要不然会不平分,可以看到我的前三个的setRowspan里面的值都是一样的*  当你的第一行设置平分之后后面的就可以不用设置*/cell0.setRowspan(3);//如果不要可以设置边框为0//cell0.setBorder(0);/*** setColspan的作用是合并单元格,参数为几的时候就代表合并几个单元格,* 当你的参数大于table的列数的时候效果和参数等于table列数的时候效果一样*///cell0.setColspan(1);table0.addCell(cell0);cell0 = new PdfPCell(new Phrase("科目", fiveFont));cell0.setMinimumHeight(28); // 设置单元格高度cell0.setUseAscender(true); // 设置可以居中cell0.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell0.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中cell0.setRowspan(3);//如果不要可以设置边框为0//cell0.setBorder(0);//cell0.setColspan(1);table0.addCell(cell0);cell0 = new PdfPCell(new Phrase("科目2", fiveFont));cell0.setMinimumHeight(28); // 设置单元格高度cell0.setUseAscender(true); // 设置可以居中cell0.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell0.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中cell0.setRowspan(3);//如果不要可以设置边框为0//cell0.setBorder(0);//cell0.setColspan(1);table0.addCell(cell0);cell0 = new PdfPCell(new Phrase("{2018-11-24}税金计提", smallFiveFont));cell0.setMinimumHeight(20); // 设置单元格高度cell0.setUseAscender(true); // 设置可以居中cell0.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell0.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table0.addCell(cell0);cell0 = new PdfPCell(new Phrase("其他应付款-支付与转出", smallFiveFont));cell0.setMinimumHeight(20); // 设置单元格高度cell0.setUseAscender(true); // 设置可以居中cell0.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell0.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table0.addCell(cell0);cell0 = new PdfPCell(new Phrase("支付与转出", smallFiveFont));cell0.setMinimumHeight(20); // 设置单元格高度cell0.setUseAscender(true); // 设置可以居中cell0.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell0.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table0.addCell(cell0);cell0 = new PdfPCell(new Phrase("3", smallFiveFont));cell0.setMinimumHeight(20); // 设置单元格高度cell0.setUseAscender(true); // 设置可以居中cell0.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell0.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table0.addCell(cell0);cell0 = new PdfPCell(new Phrase("3", smallFiveFont));cell0.setMinimumHeight(20); // 设置单元格高度cell0.setUseAscender(true); // 设置可以居中cell0.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell0.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table0.addCell(cell0);/*** 复选框start-----------------------*///float[] folsts={0.3f,0.5f,0.3f,0.5f};PdfPTable pdfPTable1=new PdfPTable(4);//pdfPTable1.setWidths(folsts)cell0=new PdfPCell();cell0.setCellEvent(new CheckboxCellEvent("1",true));cell0.setHorizontalAlignment(Element.ALIGN_RIGHT);cell0.setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中cell0.setBorder(0);cell0.setPaddingRight(1);pdfPTable1.addCell(cell0);cell0 = new PdfPCell(new Phrase("是",context));cell0.setBorder(0);// 设置单元格无边框cell0.setHorizontalAlignment(Element.ALIGN_LEFT);// 设置内容水平左对齐显示cell0.setVerticalAlignment(Element.ALIGN_MIDDLE);// 设置内容垂直居中显示pdfPTable1.addCell(cell0);cell0=new PdfPCell();cell0.setCellEvent(new CheckboxCellEvent("0",false));cell0.setHorizontalAlignment(Element.ALIGN_RIGHT);cell0.setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中cell0.setBorder(0);cell0.setPaddingRight(1);pdfPTable1.addCell(cell0);cell0 = new PdfPCell(new Phrase("否",context));cell0.setHorizontalAlignment(Element.ALIGN_LEFT);// 设置内容水平左对齐显示cell0.setVerticalAlignment(Element.ALIGN_MIDDLE);// 设置内容垂直居中显示cell0.setBorder(0);// 设置单元格无边框pdfPTable1.addCell(cell0);table0.addCell(pdfPTable1);/*** end-------------*//*cell0 = new PdfPCell(new Phrase("3", smallFiveFont));cell0.setMinimumHeight(20); // 设置单元格高度cell0.setUseAscender(true); // 设置可以居中cell0.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell0.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table0.addCell(cell0);*/// 借方发生的  设计一个10列的表.PdfPTable table1 = new PdfPTable(10);table1.setWidthPercentage(102); // 宽度100%填充
//	            table1.setSpacingBefore(10f); // 前间距
//	            table1.setSpacingAfter(10f); // 后间距// 设置列宽float[] columnWidths1 = { 0.06f,0.06f,0.06f,0.06f,0.06f,0.06f,0.06f,0.06f,0.06f,0.06f};table1.setWidths(columnWidths1);PdfPCell cell2;cell2 = new PdfPCell(new Phrase("借方发生", fiveFont));cell2.setMinimumHeight(13); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_TOP); // 设置垂直居中cell2.setColspan(10);table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("千", smallSixFont));cell2.setMinimumHeight(15); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("百", smallSixFont));cell2.setMinimumHeight(15); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("十", smallSixFont));cell2.setMinimumHeight(15); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("万", smallSixFont));cell2.setMinimumHeight(15); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("千", smallSixFont));cell2.setMinimumHeight(15); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("百", smallSixFont));cell2.setMinimumHeight(15); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("十", smallSixFont));cell2.setMinimumHeight(15); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("元", smallSixFont));cell2.setMinimumHeight(15); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("角", smallSixFont));cell2.setMinimumHeight(15); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("分", smallSixFont));cell2.setMinimumHeight(15); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);//借方贷方的金额十列  第一行cell2 = new PdfPCell(new Phrase("", smallSixFont));cell2.setMinimumHeight(20); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("", smallSixFont));cell2.setMinimumHeight(20); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("", smallSixFont));cell2.setMinimumHeight(20); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("", smallSixFont));cell2.setMinimumHeight(20); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("", smallSixFont));cell2.setMinimumHeight(20); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("", smallSixFont));cell2.setMinimumHeight(20); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("", smallSixFont));cell2.setMinimumHeight(20); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("", smallSixFont));cell2.setMinimumHeight(20); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("", smallSixFont));cell2.setMinimumHeight(20); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("", smallSixFont));cell2.setMinimumHeight(20); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);// 第二行cell2 = new PdfPCell(new Phrase("", smallSixFont));cell2.setMinimumHeight(20); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("", smallSixFont));cell2.setMinimumHeight(20); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("", smallSixFont));cell2.setMinimumHeight(20); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("", smallSixFont));cell2.setMinimumHeight(20); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("", smallSixFont));cell2.setMinimumHeight(20); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("", smallSixFont));cell2.setMinimumHeight(20); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("", smallSixFont));cell2.setMinimumHeight(20); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("", smallSixFont));cell2.setMinimumHeight(20); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("", smallSixFont));cell2.setMinimumHeight(20); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);cell2 = new PdfPCell(new Phrase("", smallSixFont));cell2.setMinimumHeight(20); // 设置单元格高度cell2.setUseAscender(true); // 设置可以居中cell2.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell2.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table1.addCell(cell2);//最后一行//float[] Wights={2.4f};PdfPTable pdfPTable2=new PdfPTable(1);//pdfPTable2.setWidths(Wights);PdfPCell cell5;cell5=new PdfPCell(new Paragraph("金额合计:捌佰陆拾壹元陆角玖分",context));cell5.setMinimumHeight(20); // 设置单元格高度cell5.setUseAscender(true); // 设置可以居中cell5.setHorizontalAlignment(Element.ALIGN_LEFT); // 设置水平居中cell5.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中pdfPTable2.addCell(cell5);PdfPTable table3 = new PdfPTable(10);table3.setWidthPercentage(102); // 宽度100%填充// 设置列宽float[] columnWidths3 = { 0.06f,0.06f,0.06f,0.06f,0.06f,0.06f,0.06f,0.06f,0.06f,0.06f};table3.setWidths(columnWidths3);PdfPCell cell3;cell3 = new PdfPCell(new Phrase("", smallSixFont));cell3.setMinimumHeight(20); // 设置单元格高度cell3.setUseAscender(true); // 设置可以居中cell3.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell3.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table3.addCell(cell3);cell3 = new PdfPCell(new Phrase("", smallSixFont));cell3.setMinimumHeight(20); // 设置单元格高度cell3.setUseAscender(true); // 设置可以居中cell3.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell3.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table3.addCell(cell3);cell3 = new PdfPCell(new Phrase("", smallSixFont));cell3.setMinimumHeight(20); // 设置单元格高度cell3.setUseAscender(true); // 设置可以居中cell3.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell3.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table3.addCell(cell3);cell3 = new PdfPCell(new Phrase("", smallSixFont));cell3.setMinimumHeight(20); // 设置单元格高度cell3.setUseAscender(true); // 设置可以居中cell3.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell3.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table3.addCell(cell3);cell3 = new PdfPCell(new Phrase("", smallSixFont));cell3.setMinimumHeight(20); // 设置单元格高度cell3.setUseAscender(true); // 设置可以居中cell3.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell3.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table3.addCell(cell3);cell3 = new PdfPCell(new Phrase("", smallSixFont));cell3.setMinimumHeight(20); // 设置单元格高度cell3.setUseAscender(true); // 设置可以居中cell3.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell3.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table3.addCell(cell3);cell3 = new PdfPCell(new Phrase("", smallSixFont));cell3.setMinimumHeight(20); // 设置单元格高度cell3.setUseAscender(true); // 设置可以居中cell3.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell3.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table3.addCell(cell3);cell3 = new PdfPCell(new Phrase("", smallSixFont));cell3.setMinimumHeight(20); // 设置单元格高度cell3.setUseAscender(true); // 设置可以居中cell3.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell3.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table3.addCell(cell3);cell3 = new PdfPCell(new Phrase("", smallSixFont));cell3.setMinimumHeight(20); // 设置单元格高度cell3.setUseAscender(true); // 设置可以居中cell3.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell3.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table3.addCell(cell3);cell3 = new PdfPCell(new Phrase("", smallSixFont));cell3.setMinimumHeight(20); // 设置单元格高度cell3.setUseAscender(true); // 设置可以居中cell3.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中cell3.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中table3.addCell(cell3);//将上面的四个表格加入到大表格中table.addCell(table0);table.addCell(table1);table.addCell(pdfPTable2);table.addCell(table3);//将大表格加入文档中document.add(table);//关闭文档document.close();//关闭书写器writer.close();}catch (Exception e){e.printStackTrace();}}
}
三,生成页眉页脚
package com.ssm.pdf;import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.*;public class PDFPrintEventHelper007 extends PdfPageEventHelper {private BaseFont baseFont;//字体/** The Graphic state */public PdfGState pdfGState;private static Barcode128 code128 = new Barcode128();public void onOpenDocument(PdfWriter pdfWriter, Document document) {try {baseFont = BaseFont.createFont("C:/WINDOWS/Fonts/simhei.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);if(code128 == null) {code128 = new Barcode128();}code128.setBarHeight(14f);			pdfGState = new PdfGState();pdfGState.setFillOpacity(1f);pdfGState.setStrokeOpacity(1f);}catch(Exception ex) {ex.printStackTrace();}}public void onStartPage(PdfWriter pdfWriter, Document document) {}public void onEndPage(PdfWriter pdfWriter, Document document) {PdfContentByte pdfContByte = pdfWriter.getDirectContent();pdfContByte.saveState();pdfContByte.beginText();pdfContByte.setGState(pdfGState);pdfContByte.setFontAndSize(baseFont, 48);String headFootText = "人寿保险有限公司";float headTextPos = document.top() + 18;pdfContByte.setFontAndSize(baseFont, 10);pdfContByte.setTextMatrix(document.right() - 175, headTextPos);pdfContByte.showText(headFootText);String line = "_________________________________________________________________________________________________________";float headTextLinePos = document.top() + 10;pdfContByte.setFontAndSize(baseFont, 10);pdfContByte.setTextMatrix(document.left() + 25, headTextLinePos);pdfContByte.showText(line);String metLifeCustSer = "*UWFQ03*";float footTextCSPos = document.bottom() - 8;pdfContByte.setFontAndSize(baseFont, 12);pdfContByte.setTextMatrix(document.left() + 237, footTextCSPos);pdfContByte.showText(metLifeCustSer);String metLifeSite = "HO-NB-300-2884";float footTextSTPos = document.bottom() - 24;pdfContByte.setFontAndSize(baseFont, 10);pdfContByte.setTextMatrix(document.left() + 230, footTextSTPos);pdfContByte.showText(metLifeSite);pdfContByte.endText();pdfContByte.restoreState();				}public void onCloseDocument(PdfWriter pdfWriter, Document document) {}
}
四.生成复选框

复选框中的对号和框需要自己手动调

package com.ssm.pdf;import com.itextpdf.text.BaseColor;
import com.itextpdf.text.ExceptionConverter;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.*;public class CheckboxCellEvent implements PdfPCellEvent {// The name of the check box fieldprotected String name;protected boolean flag ;// We create a cell eventpublic CheckboxCellEvent(String name, boolean flag) {this.name = name;this.flag = flag;}// We create and add the check box fieldpublic void cellLayout(PdfPCell cell, Rectangle position,PdfContentByte[] canvases) {PdfWriter writer = canvases[0].getPdfWriter();// define the coordinates of the middlefloat x = (position.getLeft() + position.getRight()) / 2;float y = (position.getTop() + position.getBottom()) / 2;// define the position of a check box that measures 20 by 20//画勾Rectangle rect = new Rectangle(x - 4, y - 6, x + 4, y + 2);RadioCheckField checkbox = new RadioCheckField(writer, rect, name, "On");checkbox.setCheckType(RadioCheckField.TYPE_CHECK);if(flag){//设置为选中状态checkbox.setChecked(true);}else{checkbox.setChecked(false);}//画框PdfContentByte canvas = canvases[PdfPTable.LINECANVAS];canvas.setColorStroke(BaseColor.BLACK);canvas.setLineDash(1f);canvas.rectangle(x - 5, y - 6, 10,10);canvas.stroke();try {writer.addAnnotation(checkbox.getCheckField());} catch (Exception e) {throw new ExceptionConverter(e);}}
}
五.最后生成的pdf

在这里插入图片描述

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. mysql修改配置文件

    命令行进入mysql C:\Program Files\MySQL\MySQL Server 5.7\bin>mysql -u root -p输入: select datadir;配置文件my.ini就在打印出来的目录Data的上一级目录: 例如:C:\ProgramData\MySQL\MySQL Server 5.7\修改group_concat的限制查询长度问题: 在my.ini里加入(后面长度…...

    2024/4/27 6:28:20
  2. 你为什么在自动化测试路上总遇难题?这次终于有人给答案了

    随着软件测试技术的发展&#xff0c;人们已经从最初纯粹的手工测试转变为手工与自动化测试技术相结合的测试方法。近年来&#xff0c;自动化测试很热&#xff0c;收益也很明显&#xff0c;光会手工点点点已然out了&#xff0c;越来越多的企业开始重视自动化测试。 1、自动化测…...

    2024/4/22 20:45:02
  3. 28.spring系列- @Scheduled @EnableScheduling定时器详解

    spring中 Scheduled & EnableScheduling 这2个注解&#xff0c;可以用来快速开发定时器&#xff0c;使用特别的简单。 如何使用&#xff1f; 用法 需要定时执行的方法上加上Scheduled注解&#xff0c;这个注解中可以指定定时执行的规则spring容器中使用EnableScheduling…...

    2024/5/4 2:59:21
  4. C#异常处理

    文章目录博主写作不容易&#xff0c;孩子需要您鼓励 万水千山总是情 , 先点个赞行不行 异常是在程序执行期间出现的问题。C# 中的异常是对程序运行时出现的特殊情况的一种响应&#xff0c;比如尝试除以零。 异常提供了一种把程序控制权从某个部分转移到另一个部分的方式。…...

    2024/4/26 1:33:40
  5. 图像处理

    业务过程中使用到的图像处理记录Java使用Tess4J 实现简单的图像识别maven添加需要用的什么语言包之类的东西需要注意的问题demo二级目录三级目录Java使用Tess4J 实现简单的图像识别 maven添加 <dependency><groupId>net.sourceforge.tess4j</groupId><a…...

    2024/4/27 8:23:41
  6. 《Centos系统——Web服务之nginx优化篇》

    目录nginx优化1. NGINX运行工作进程数量2. Nginx运行CPU亲和力3. Nginx最大打开文件数4. Nginx事件处理模型5. 开启高效传输模式6. 连接超时时间7. fastcgi 调优1. Nginx FastCGI的运行原理2. NginxFastCGI运作过程8. gzip 调优9. expires 缓存调优10. 防盗链11. 内核参数优化1…...

    2024/4/22 3:54:11
  7. 官方示例之地球模块八:创建GeoODLine

    /*** 该示例展示了创建不同样式的 GeoODLine*/ var app new THING.App(); app.background [0, 0, 0]THING.Utils.dynamicLoad(https://www.thingjs.com/uearth/uearth.min.js, function () {// 创建一个地图var map app.create({type: Map,attribution: Google,style: {nigh…...

    2024/4/15 4:30:11
  8. Python初学(三)list,元祖,字典

    关于list list("你好吗")#字符串转列表 [你, 好, 吗]list({"你好吗","好"}) #[你好吗, 好]list.append()#在列表后面加一个元素&#xff0c;元素可以是列表 list.extend()#在列表后面增加一个列表&#xff0c;把列表里面每个元素都加进去 list.…...

    2024/4/30 18:58:48
  9. kali下域名解析失败

    1.改DNS vim /etc/resolv.conf &#xff0c;也可以直接去目录下找到文件用文本编辑器打开修改。 nameserver 202.96.134.133 nameserver 114.114.114.114 2.更新源...

    2024/4/30 13:57:13
  10. 高中生零基础学python(三)

    学习python的第三天 我又来了&#xff0c;今天好累&#xff0c;但还是得坚持学习嘛&#xff0c;废话不多说&#xff0c;Let’s get started&#xff01; 今天我们要学习的是set和dict&#xff0c;他们都是一组key的集合&#xff0c; 但他们有什么区别呢&#xff0c;接下来的学…...

    2024/4/28 19:00:13
  11. 商城网站建设要注意哪些细节

    为了让大家在后期进行商城网站建设的时候有更顺畅的体验&#xff0c;今天就跟众人分享一下关于网站建设的一些注意事项和技巧。以下这部分内容都是科学合理的&#xff0c;是行业专家做了大数据分析之后得到的结论&#xff0c;值得好好学习哦。 商城网站建设注意细节1&#xff…...

    2024/4/21 20:15:50
  12. 软件工程作业7.8.9

    HomeWork&#xff1a; Q1(C7.4) Why do we say that the requirements model represents a snapshot of a system in time? A: Because the stakeholders may don’t have a clear understanding of requirements at the begin of the projects so the model may change dyna…...

    2024/4/17 7:21:22
  13. sudo权限配置,/etc/sudoers

    user host(change_user) NOPASSWD: /bin/bash 字段信息 user 需要切换的用户 host 主机 change_user 切换到的用户 NOPASSWD 无需密码切换 /bin/bash 运行使用切换用户执行的命令...

    2024/4/26 8:40:20
  14. EL表达式的四大作用域

    EL表达式的四大作用域 1、pageContext 变量只在定义的页面上有效 2、 request 变量在一个请求中有效&#xff0c;即变量的值可以从一个页面传到下一个页面 3、 session 在整个会话中有效&#xff0c;可跨越多个界面 4、 application 由于在服务器端&#xff0c;所以此作用域…...

    2024/4/27 5:52:22
  15. HTML 与 CSS

    typora-root-url: images typora-copy-images-to: images HTML 与 CSS 主要内容 HTML ​ HTML&#xff08;HyperText Markup Language&#xff09;就是超文本标记语言。"超文本"就是表示页面内可以包含非文字元素&#xff0c;如&#xff1a;图片、链接、音乐等等。…...

    2024/4/6 9:19:38
  16. 第五章第三十七题(十进制转换为二进制)(Decimal to binary)

    第五章第三十七题&#xff08;十进制转换为二进制&#xff09;(Decimal to binary) **5.37&#xff08;十进制转换为二进制&#xff09;编写程序&#xff0c;提示用户输入一个十进制整数&#xff0c;然后显示对应的二进制值。在这个程序中不要使用Java的Integer.toBinaryStrin…...

    2024/4/20 13:07:55
  17. electron-edge-js使用electron-packager打包后,提示找不到edge-cs.dll

    问题&#xff1a; 开发环境调用edge.js是正常的&#xff0c;打包后&#xff0c;要么没反应&#xff0c;要么提示找不到edge-cs.dll 错误忘记截图了 解决办法&#xff1a; 1、编辑项目中 node_modules\edge-cs\lib\edge-cs.js&#xff0c;加上方框中的语句 2、编辑项目中的p…...

    2024/4/26 3:38:16
  18. Linux实现在任何地方进入数据库

    1.创建快捷方式 ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql 2.添加系统变量...

    2024/5/1 1:56:55
  19. 在CONDA下安装Jupyter Notebook及常用快捷键

    在CONDA下安装Jupyter Notebook 创建conda环境&#xff1a; conda create -n pytorch_env conda env list conda activate pytorch_env 安装jupyter notebook&#xff1a; conda install jupyter notebook JupyterNotebook快捷键介绍&#xff1a; Jupyter Notebook 有两种键…...

    2024/4/23 10:12:28
  20. 吐血整理,JS及es6遍历方法汇总,数组的遍历方法,进来看看吧,保证不后悔

    数组遍历方法总结 最近闲来无事&#xff0c;突然就想整理一下之前看过的数组遍历方法&#xff0c;有些方法都已经记不清了&#xff0c;正好趁此机会好好复习一下。 文章目录数组遍历方法总结前言1. for循环2. for in3. forEach4. for of5. map6. filter7. reduce8. every9. so…...

    2024/4/29 12:50:48

最新文章

  1. 生信分析最好的系统架构:个人观点

    1. 宿主机系统 结论&#xff1a;CentOS7.9&#xff0c;宿主机的最佳主系统。推荐安装 Server with GUI。优点&#xff1a; 兼容各种外接硬件&#xff0c;包括磁盘、GPU等扩展。目前为止&#xff0c;CentOS硬件驱动等支持目前是最好的&#xff0c;这也是众多IT企业选择它的原因…...

    2024/5/4 9:04:29
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 【前端】eslint 禁用命令

    /* eslint-disable */ ESLint 在校验的时候就会跳过后面的代码还可以在注释后加入详细规则&#xff0c;这样就能避开指定的校验规则了 /* eslint-disable no-new */常用&#xff1a; rules: {"comma-dangle": ["error", "never"], //是否允许对…...

    2024/5/3 2:38:15
  4. 鹅厂实习offer

    #转眼已经银四了&#xff0c;你收到offer了吗# 本来都打算四月再投实习了&#xff0c;突然三月初被wxg捞了&#xff08;一年前找日常实习投的简历就更新了下&#xff09;&#xff0c;直接冲了&#xff0c;流程持续二十多天&#xff0c;结果是运气还不错&#xff0c;应该是部门比…...

    2024/5/1 13:19:09
  5. 解决GNU Radio+USRP实现OFDM收发在接收端QPSK星座图映射无“抖动”问题

    文章目录 前言一、遇到的问题二、解决方案三、重新编译安装四、验证五、资源自取 前言 本文记录在 GNU RadioUSRP 实现 OFDM 收发时&#xff0c;在接收端 QPSK 星座图映射无“抖动”问题的解决方法&#xff0c; 一、遇到的问题 我遇到的问题是&#xff0c;现在搭建的 OFDM 模…...

    2024/5/3 13:25:32
  6. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/3 11:50:27
  7. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/2 16:04:58
  8. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/2 23:55:17
  9. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/3 16:00:51
  10. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/5/3 11:10:49
  11. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/3 21:22:01
  12. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/3 23:17:01
  13. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/2 23:47:43
  14. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/3 13:26:06
  15. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/3 1:55:15
  16. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/4 2:14:16
  17. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/3 16:23:03
  18. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/3 1:55:09
  19. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/5/2 8:37:00
  20. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/3 14:57:24
  21. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/2 9:47:25
  22. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/4 2:00:16
  23. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/3 22:03:11
  24. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/3 7:43:42
  25. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/3 1:54:59
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57