中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

網(wǎng)站制作說明書谷歌瀏覽器app

網(wǎng)站制作說明書,谷歌瀏覽器app,Wordpress自建外貿(mào)網(wǎng)站,寧波網(wǎng)站設(shè)計皆選蓉勝網(wǎng)絡(luò)一、實現(xiàn)效果 二、遇到的問題 實現(xiàn)導出PDF主體代碼參考:Java純代碼實現(xiàn)導出PDF功能,下圖是原作者實現(xiàn)的效果 導出報錯Font STSong-Light with UniGB-UCS2-H is not recognized.。參考:itext 生成 PDF(五) 使用外部字體 網(wǎng)上都是說jar包的版本…

一、實現(xiàn)效果

在這里插入圖片描述

二、遇到的問題

  1. 實現(xiàn)導出PDF主體代碼參考:Java純代碼實現(xiàn)導出PDF功能,下圖是原作者實現(xiàn)的效果
    在這里插入圖片描述
  2. 導出報錯Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized.。參考:itext 生成 PDF(五) 使用外部字體

網(wǎng)上都是說jar包的版本不對,導致的字體兼容性問題。換了jar包版本發(fā)現(xiàn)沒效果,后來索性直接把字體下載到本地直接引入。

  1. jar包發(fā)布到服務(wù)器上導出PDF的時候發(fā)生報錯BOOT-INF/classes!/fonts/SimSun.ttf not exists。

可以看到字體文件在jar目錄下面是有的,但是發(fā)現(xiàn)classes后面多了個嘆號。這是引入外部字體方式不對,后改用問題2參考文章的第三種寫法就沒問題了。

  1. 添加水印參考:itextpdf5.5.13給pdf添加圖片水印、添加文字水印(平鋪)、添加文字水印(單個)、添加頁眉、頁腳、頁眉事件、添加圖片

三、測試數(shù)據(jù)展示

list:子節(jié)點數(shù)據(jù)
0 = {BasBudgetDetailVo@16046} "BasBudgetDetailVo(budgetId=2064535550, functionId=231231232, budgetQuantity=3, totalPrice=2664.00, functionName=功能1, functionDescription=功能1描述, functionUnit=套, functionPrice=888.00, parentId=231234512, functionSort=1)"
1 = {BasBudgetDetailVo@16047} "BasBudgetDetailVo(budgetId=2039369726, functionId=231236478, budgetQuantity=1, totalPrice=888.00, functionName=功能1, functionDescription=功能1描述, functionUnit=套, functionPrice=888.00, parentId=231234879, functionSort=1)"
2 = {BasBudgetDetailVo@16048} "BasBudgetDetailVo(budgetId=2039369725, functionId=231236473, budgetQuantity=1, totalPrice=888.00, functionName=功能2, functionDescription=功能2描述, functionUnit=套, functionPrice=888.00, parentId=231234879, functionSort=2)"
3 = {BasBudgetDetailVo@16049} "BasBudgetDetailVo(budgetId=2056146943, functionId=231231241, budgetQuantity=1, totalPrice=888.00, functionName=功能2, functionDescription=功能2描述, functionUnit=套, functionPrice=888.00, parentId=231234512, functionSort=2)"
4 = {BasBudgetDetailVo@16050} "BasBudgetDetailVo(budgetId=2047758334, functionId=231236487, budgetQuantity=1, totalPrice=888.00, functionName=功能3, functionDescription=功能3描述, functionUnit=套, functionPrice=888.00, parentId=231234512, functionSort=3)"
5 = {BasBudgetDetailVo@16051} "BasBudgetDetailVo(budgetId=2039369724, functionId=231231245, budgetQuantity=1, totalPrice=888.00, functionName=功能3, functionDescription=功能3描述, functionUnit=套, functionPrice=888.00, parentId=231234879, functionSort=3)"
6 = {BasBudgetDetailVo@16052} "BasBudgetDetailVo(budgetId=2047758333, functionId=231231597, budgetQuantity=1, totalPrice=888.00, functionName=功能4, functionDescription=功能4描述, functionUnit=套, functionPrice=888.00, parentId=231234512, functionSort=4)"
7 = {BasBudgetDetailVo@16053} "BasBudgetDetailVo(budgetId=2030981118, functionId=231233154, budgetQuantity=1, totalPrice=888.00, functionName=功能4, functionDescription=功能4描述, functionUnit=套, functionPrice=888.00, parentId=231234879, functionSort=4)"
8 = {BasBudgetDetailVo@16054} "BasBudgetDetailVo(budgetId=2030981117, functionId=231234596, budgetQuantity=1, totalPrice=888.00, functionName=功能5, functionDescription=功能5描述, functionUnit=套, functionPrice=888.00, parentId=231234879, functionSort=5)"
9 = {BasBudgetDetailVo@16055} "BasBudgetDetailVo(budgetId=2030981116, functionId=231235487, budgetQuantity=1, totalPrice=888.00, functionName=功能6, functionDescription=功能6描述, functionUnit=套, functionPrice=888.00, parentId=231234879, functionSort=6)"functionInfoList:根節(jié)點數(shù)據(jù)
0 = {BasFunctionInfo@16090} "BasFunctionInfo(functionId=231234512, functionName=模塊1, functionDescription=, functionUnit=0, functionPrice=0.00, createName=管理員, createBy=admin, createTime=Wed Jan 24 16:56:35 CST 2024, updateName=管理員, updateBy=admin, updateTime=Wed Jan 24 16:56:38 CST 2024, functionQuantity=null, functionSort=1, parentId=null)"
1 = {BasFunctionInfo@16091} "BasFunctionInfo(functionId=231234879, functionName=模塊2, functionDescription=, functionUnit=0, functionPrice=0.00, createName=管理員, createBy=admin, createTime=Wed Jan 24 16:56:35 CST 2024, updateName=管理員, updateBy=admin, updateTime=Wed Jan 24 16:56:38 CST 2024, functionQuantity=null, functionSort=2, parentId=null)"matchList:當前節(jié)點的子節(jié)點數(shù)據(jù)

四、jar包引入

<!--導出pdf所需包-->
<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.10</version>
</dependency>
<dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version>
</dependency>
</dependencies>

五、外部字體引入

字體文件資源自己百度,直接搜SimSun.ttf字體下載不難找
在這里插入圖片描述

六、代碼實現(xiàn)

private final ResourceLoader resourceLoader;public BasBudgetDetailServiceImpl(ResourceLoader resourceLoader) {this.resourceLoader = resourceLoader;
}/*** 導出pdf* * @param response* @throws Exception*/
@Override
public void downloadPdf(HttpServletResponse response) throws Exception {// 業(yè)務(wù)數(shù)據(jù),根據(jù)需求查詢獲取// 子節(jié)點數(shù)據(jù)List<BasBudgetDetailVo> list;// 根子節(jié)點數(shù)據(jù)List<BasFunctionInfo> functionInfoList;// 定義全局的字體靜態(tài)變量Font content = null;Resource resource = resourceLoader.getResource("classpath:/fonts/SimSun.ttf");InputStream inputStream = resource.getInputStream();BaseFont bfChinese = null;try {// 字體bfChinese = BaseFont.createFont("SimSun.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED, true, IOUtils.toByteArray(inputStream), null);content = new Font(bfChinese, 10, Font.NORMAL);} catch (Exception e) {e.printStackTrace();}BaseFont bf = null;Font font = null;try {//創(chuàng)建字體bf = BaseFont.createFont("SimSun.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED, true, IOUtils.toByteArray(inputStream), null);//使用字體并給出顏色font = new Font(bf, 20, Font.BOLD, BaseColor.BLACK);} catch (Exception e) {e.printStackTrace();}Document document = new Document(new RectangleReadOnly(842F, 595F));try {PdfWriter pdfWriter = PdfWriter.getInstance(document, response.getOutputStream());//打開生成的pdf文件document.open();//設(shè)置標題Paragraph paragraph = new Paragraph("這是標題文檔標題", font);paragraph.setAlignment(1);//引用字體document.add(paragraph);// 總額BigDecimal detailTotal = BigDecimal.valueOf(0);for (BasFunctionInfo functionInfo : functionInfoList) {// 匹配明細List<BasBudgetDetailVo> matchList = list.stream().filter(item ->String.valueOf(item.getParentId()).equals(String.valueOf(functionInfo.getFunctionId()))).collect(Collectors.toList());// 設(shè)置表格的列寬和列數(shù)float[] widths = {10f, 35f, 70f, 10f, 10f, 20f, 20f};PdfPTable table = new PdfPTable(widths);table.setSpacingBefore(20f);// 設(shè)置表格寬度為100%table.setWidthPercentage(100.0F);table.setHeaderRows(1);table.getDefaultCell().setHorizontalAlignment(1);//列表-表頭String[] titleList = new String[]{"序號", "功能名稱", "功能描述", "數(shù)量", "單位", "單價(元)", "總價(元)"};addTableTitle(table, content, titleList);// 模塊總額BigDecimal modelTotal = BigDecimal.valueOf(0);//列表數(shù)據(jù)if (matchList.size() > 0) {Integer index = 1;for (BasBudgetDetailVo item : matchList) {PdfPCell cell1 = new PdfPCell(new Paragraph(String.valueOf(index), content));PdfPCell cell2 = new PdfPCell(new Paragraph(item.getFunctionName(), content));PdfPCell cell3 = new PdfPCell(new Paragraph(item.getFunctionDescription(), content));PdfPCell cell4 = new PdfPCell(new Paragraph(String.valueOf(item.getBudgetQuantity()), content));PdfPCell cell5 = new PdfPCell(new Paragraph(item.getFunctionUnit(), content));PdfPCell cell6 = new PdfPCell(new Paragraph(String.valueOf(item.getFunctionPrice()), content));BigDecimal totalPrice = item.getFunctionPrice().multiply(BigDecimal.valueOf(item.getBudgetQuantity()));PdfPCell cell7 = new PdfPCell(new Paragraph(String.valueOf(totalPrice), content));//單元格對齊方式cell1.setFixedHeight(20);cell1.setHorizontalAlignment(Element.ALIGN_CENTER);cell1.setVerticalAlignment(Element.ALIGN_MIDDLE);// 文字長度大于15的時候,設(shè)置表格行間距,底邊距離if (item.getFunctionName().length() > 15) {cell2.setLeading(0f, 1.5f);cell2.setPaddingBottom(10);}cell2.setHorizontalAlignment(Element.ALIGN_CENTER);cell2.setVerticalAlignment(Element.ALIGN_MIDDLE);// 文字長度大于30的時候,設(shè)置表格行間距,底邊距離if (item.getFunctionDescription().length() > 30) {cell3.setLeading(0f, 1.5f);cell3.setPaddingBottom(10);}cell3.setHorizontalAlignment(Element.ALIGN_CENTER);cell3.setVerticalAlignment(Element.ALIGN_MIDDLE);cell4.setHorizontalAlignment(Element.ALIGN_CENTER);cell4.setVerticalAlignment(Element.ALIGN_MIDDLE);cell5.setHorizontalAlignment(Element.ALIGN_CENTER);cell5.setVerticalAlignment(Element.ALIGN_MIDDLE);cell6.setHorizontalAlignment(Element.ALIGN_CENTER);cell6.setVerticalAlignment(Element.ALIGN_MIDDLE);cell7.setHorizontalAlignment(Element.ALIGN_CENTER);cell7.setVerticalAlignment(Element.ALIGN_MIDDLE);table.addCell(cell1);table.addCell(cell2);table.addCell(cell3);table.addCell(cell4);table.addCell(cell5);table.addCell(cell6);table.addCell(cell7);// 序號index++;modelTotal = modelTotal.add(totalPrice);}// 合計行PdfPCell cell1 = new PdfPCell(new Paragraph("合計", content));cell1.setFixedHeight(20);cell1.setHorizontalAlignment(Element.ALIGN_CENTER);cell1.setVerticalAlignment(Element.ALIGN_MIDDLE);// 空格PdfPCell cell2 = new PdfPCell(new Paragraph("", content));cell2.setFixedHeight(20);cell2.setHorizontalAlignment(Element.ALIGN_CENTER);cell2.setVerticalAlignment(Element.ALIGN_MIDDLE);// 數(shù)額PdfPCell cell3 = new PdfPCell(new Paragraph(String.valueOf(modelTotal), content));cell3.setFixedHeight(20);cell3.setHorizontalAlignment(Element.ALIGN_CENTER);cell3.setVerticalAlignment(Element.ALIGN_MIDDLE);table.addCell(cell1);table.addCell(cell2);table.addCell(cell2);table.addCell(cell2);table.addCell(cell2);table.addCell(cell2);table.addCell(cell3);detailTotal = detailTotal.add(modelTotal);}document.add(new Paragraph("\n"));document.add(new Paragraph("▋ " + functionInfo.getFunctionName(), content));document.add(table);document.add(new Paragraph("\n"));if (matchList.size() == 0) {document.add(new Paragraph("暫無數(shù)據(jù)", content));}}document.add(new Paragraph("\n"));document.add(new Paragraph("總計:" + detailTotal + "元", content));// 加水印PdfContentByte waterMar = pdfWriter.getDirectContentUnder();String text = "天天想辭職月月拿全勤";addTextFullWaterMark(waterMar, text, bfChinese);document.close();} catch (DocumentException e) {e.printStackTrace();log.error("導出pdf失敗:{}", e);}
}/*** 給表格添加表頭** @param table* @param content* @param titleList*/
public void addTableTitle(PdfPTable table, Font content, String[] titleList) {PdfPCell cell = null;for (String title : titleList) {cell = new PdfPCell(new Paragraph(title, content));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setFixedHeight(20);cell.setNoWrap(false);table.addCell(cell);}
}/*** 給pdf添加文字水印(平鋪)** @param waterMar* @param text     水印文本* @throws Exception*/
public static void addTextFullWaterMark(PdfContentByte waterMar, String text, BaseFont bf) {waterMar.beginText();PdfGState gs = new PdfGState();// 設(shè)置填充字體不透明度為0.2fgs.setFillOpacity(0.2f);waterMar.setFontAndSize(bf, 20);// 設(shè)置透明度waterMar.setGState(gs);// 設(shè)置水印對齊方式 水印內(nèi)容 X坐標 Y坐標 旋轉(zhuǎn)角度for (int x = 0; x <= 900; x += 200) {for (int y = -50; y <= 800; y += 200) {waterMar.showTextAligned(Element.ALIGN_RIGHT, text, x, y, 35);}}// 設(shè)置水印顏色waterMar.setColorFill(BaseColor.GRAY);//結(jié)束設(shè)置waterMar.endText();waterMar.stroke();
}
http://www.risenshineclean.com/news/35342.html

相關(guān)文章:

  • 南陽網(wǎng)站優(yōu)化渠道市場調(diào)研報告的基本框架
  • server2012 wordpress想找搜索引擎優(yōu)化
  • 網(wǎng)站建設(shè)裝修專業(yè)網(wǎng)站推廣優(yōu)化
  • 網(wǎng)站制作工具 簡易中國國家培訓網(wǎng)官網(wǎng)查詢
  • 南寧建站程序搜索引擎營銷的四種方式
  • 蘭州做網(wǎng)站哪家好網(wǎng)址域名ip解析
  • 免認證域名注冊手機卡頓優(yōu)化軟件
  • 龍之向?qū)赓Q(mào)網(wǎng)站 網(wǎng)絡(luò)服務(wù)關(guān)鍵詞優(yōu)化設(shè)計
  • 網(wǎng)站建設(shè)對網(wǎng)絡(luò)營銷的影響seo課程簡介
  • 導購網(wǎng)站建設(shè)網(wǎng)絡(luò)營銷有什么方式
  • 企業(yè)網(wǎng)站虛擬空間自助建站免費建站平臺
  • 購物網(wǎng)站開發(fā)實例鄭州網(wǎng)站公司哪家好
  • 做網(wǎng)站要用多少錢如何在其他平臺做推廣
  • 橋頭仿做網(wǎng)站個人博客
  • 專門做淘寶優(yōu)惠券的網(wǎng)站互聯(lián)網(wǎng)營銷的特點
  • 基層建設(shè)論文收錄在哪個網(wǎng)站公司做網(wǎng)站一般多少錢
  • dz論壇可以做商業(yè)網(wǎng)站seo搜索引擎優(yōu)化課程
  • 做ppt的軟件模板下載網(wǎng)站滿十八歲可以申請abc認證嗎
  • 南陽專業(yè)網(wǎng)站制作費用seo公司官網(wǎng)
  • 保世基官方網(wǎng)站建設(shè)北京云無限優(yōu)化
  • 網(wǎng)站域名密碼找回b2b電子商務(wù)網(wǎng)站都有哪些
  • 兗州住房與城鄉(xiāng)建設(shè)局網(wǎng)站企業(yè)網(wǎng)絡(luò)營銷方法
  • 一個二手書網(wǎng)站的建設(shè)目標google推廣公司
  • 給別人做網(wǎng)站的公司長治seo
  • 網(wǎng)頁瀏覽器tv版51趣優(yōu)化網(wǎng)絡(luò)seo工程師教程
  • 如何做網(wǎng)站規(guī)劃谷歌推廣運營
  • 直接拖拉做網(wǎng)站的軟件seo網(wǎng)站培訓優(yōu)化怎么做
  • 用HBuilder做網(wǎng)站的模板關(guān)鍵詞優(yōu)化顧問
  • 做當?shù)亻T戶網(wǎng)站多少錢html網(wǎng)頁制作軟件有哪些
  • 怎么給網(wǎng)站制作二維碼免費網(wǎng)站排名優(yōu)化軟件