ava組件生成PDF文件
最近和一位朋友聊自己微信小程序的事情,朋友的建議將小程序的文章給去掉,增加一個新的功能,他說我寫的文章很雞肋。自己聽完之后內心及其猶豫,一方面自己也很清楚自己的文字的功底確實不行,寫的技術文章沒多少人看,但是一直想這個能鍛煉出來。另一方面雖然文章沒人看,但是文章的功能是自己一點一點寫出來的,讓我隱藏起來,我確實有點不想接受。
猶豫幾天,還是決定去除這個功能,剛好最近對于后臺的重構也在進行,所以決定來一個大的改版(估計需要一段時間才能真正上線新的功能)。
今天的文章,也就是在準備的過程中實現的一個功能-導出PDF。
在日常的工作中,利用POI導出Excel的功能需求自己做了不少,但是導出PDF確實是第一次做,在百度上進行一番查閱,發現大家基本都是使用Abode的iText組件來生成PDF。
所以這里也隨大流,選用iText,官網上iText已經到7了,但是百度搜索的案例中,大多用的都是iText5,這里考慮自己對iText不熟悉,所以還是根據案例也選用5,一方面,入手快有現成的代碼可以復制,另一方面用的人多,對于一些常見的坑,填的人也會多,自己就不用一點點摸索了
當然了,如果愿意摸索,可以去官網看案例和API,下面附上官網地址:https://itextpdf.com/en
引入依賴文件
<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.13</version> </dependency> <!-- https://mvnrepository.com/artifact/com.itextpdf/itext-asian --> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itext-asian</artifactId> <version>5.2.0</version> </dependency>
創建Document對象,三種方式:
Document document=new Document(); // 默認頁面大小是A4
Document document=new Document(PageSize.A4); // 指定頁面大小為A4
Document document=new Document(PageSize.A4,50,50,30,20); // 指定頁面大小為A4,且自定義頁邊距(marginLeft、marginRight、marginTop、marginBottom)
創建PdfWriter對象
第一個參數是對文檔對象的引用
第二個參數是需要寫入的PDF文件的實際路徑。我們也可以使用字節數組流實現。
//實際文件 File file=new File("/Users/chenlong/Documents/test.pdf"); PdfWriter writer=PdfWriter.getInstance(document, new FileOutputStream(file)); //字節數組流 ByteArrayOutputStream baos=null; baos=new ByteArrayOutputStream();//構建字節輸出流 PdfWriter.getInstance(doc,baos);//將PDF文檔對象寫入到流
Write對象創建完的操作
首先打開documet(這個過程就像我們創建一個空的pdf文件,然后打開來創作一樣)
然后開始寫入數據
設置文檔屬性
最后關閉
document.open(); document.addTitle("標題"); document.addAuthor("每天學Java"); document.addSubject("測試報表"); document.addKeywords("關鍵字"); document.addCreator("陳龍"); new PDFUtil().generatePDF(document, reportVO); document.close();
而generatePDF方法是自定義的方法,對于文檔內容的填充。
通常我們會用到的內容內容類有:
段落Paragraph 表格table 單元格內容樣式cell 直線 LineSeparator 點線 DottedLineSeparator 超鏈接 Anchor 添加圖片 Image 定位 Anchor 水印功能 Watermark內部類,需要繼承 PdfPageEventHelper類 writer.setPageEvent(new Watermark());
里面的詳細屬性這里就不在說了,我們只看簡單的段落
//字體大小,粗細,顏色 Font titlefont=new Font(bfChinese, 16, Font.BOLD,, BaseColor.RED); //段落 Paragraph paragraph=new Paragraph("測試報表", titlefont); //段落屬性 paragraph.setAlignment(1); //設置文字居中 0靠左 1,居中 2,靠右 paragraph.setIndentationLeft(100); //設置左縮進 paragraph.setIndentationRight(100); //設置右縮進 paragraph.setFirstLineIndent(24); //設置首行縮進 paragraph.setLeading(40f); //行間距 paragraph.setSpacingBefore(5f); //設置段落上空白 paragraph.setSpacingAfter(10f); //設置段落下空白 //分割線 Paragraph p1=new Paragraph(); p1.add(new Chunk(new LineSeparator())); //如果需要換行 paragraph.add(Chunk.NEWLINE); //定義一個塊,塊之間的換行也可以使用Chunk.NEWLINE Chunk chunk=new Chunk("我是一個文本塊"); chunk.setFont(problems); chunk.setWordSpacing(50); paragraph.add(chunk); //需要將段落增加到document中 document.add(paragraph); document.add(p1);
實現過程參考文章:
https://blog.csdn.net/weixin_37848710/article/details/89522862
關于小程序:
之前朋友問我,指望這個掙錢嗎?我也好好的問了自己,如實回答,自己畢業一年多了,小程序也一年多了,我確實希望它通過廣告費啥的掙到錢,但是如果沒有廣告,我覺得還是會去做,因為到了這個階段,每一次代碼的改動和架構的調整,需要我付出學習和思考的時間,而這能讓我拿到現階段我工作中所得不到知識。
今,搜索已經滲透到人們生活的各個領域,有效結合用戶真實需求的搜索也為企業的成長開辟了更廣闊的天地。
9月20日,2023海量引擎搜索廣告營銷大會正式召開,主題為“搜索未來,抓住機遇”。圍繞電商、本地、線索、下載四大場景的業務需求,解讀了一場規模宏大的搜索廣告營銷大會。搜索引擎營銷的產品特性和行業解決方案幫助商家進行新的戰略搜索。
01 搜索流量快速增長,不容錯過的新戰略機遇
抖音,搜索已成為連接用戶和信息的重要樞紐。據巨引擎平臺2023年數據顯示,三年內抖音搜索次數增長了三倍以上,90%以上的用戶已經建立或初步養成了搜索習慣。目前,抖音搜索結果覆蓋200多個內容類別,不僅涵蓋影視等用戶感興趣的生活內容,還涵蓋教育、游戲、汽車等商業價值較高的類別。
抖音豐富的內容生態系統準確接收并放大用戶搜索流量。 短視頻中的“相關搜索”、搜索欄下的“猜你想搜什么”、評論互動場景中的熱門詞等都成為用戶的重要場景。隨著抖音“啟發式搜索”不斷侵入用戶的生活,用戶已經養成了深刻的搜索習慣,從搜索內容到搜索產品和服務。
隨著流量的不斷增長和用戶習慣的不斷培養,搜索可以在電子商務、本地商務、線索和下載等各種業務場景中為商家帶來顯著的增長。
為了進一步幫助商戶抓住搜索機遇,聚居引擎還加大流量投入,為行業提供專業支持,構建人才培養體系,提升綜合服務能力,為商戶開拓搜索新藍海。
02 更新全場景產品特性,推動業務增長
如今,大量用戶每天都會搜索后購買產品、購買團購、預約咨詢、下載和使用產品。巨引擎還不斷優化產品營銷能力,適應四大主要場景,幫助商家利用搜索驅動確定性增長。
網店搜索:從初創到運營,一站式服務伴隨成長
過去一年,日均電子商務搜索量增長了 93%,其中電子商務搜索是增長的關鍵中心。海量搜索引擎廣告幫助商家實現從創業到運營的全面成長。
初期,商家可通過“新客無憂投放”享受搜索流量支持和長達7天免訂單補償等雙重激勵,并快速測試產品,加快訂單轉化。在運營階段,商家可以利用“產品卡”觸達大群潛在客戶,提高投放后CVR和CTR。利用“藍海產品推薦”尋找搜索量高、供應量少、競爭少的定制產品,以更低的出價獲得更多。多種交通選擇;利用“新品加速”快速度過冷啟動階段,實現新品突破。
在長期運營階段,交易者可以通過“巨云圖”獲得全階段策略指導,利用“抖音電商指南針”理清業務,科學高效地實現確定性增長。
本地搜索:生活服務綜合鏈接,選品促轉化
去年,抖音生活服務相關搜索流量突破百億。截至去年底,抖音門店數量超過200萬家,GMV翻倍增長。 Judo Engine的本地搜索產品也不斷更新,為商家提供創新的解決方案。
本地團購卡是優化拓展團購綜合搜索和垂直搜索多渠道入口,精準拓展本地流量的卡之一。暑期旅游旺季,長隆歡樂世界利用當地團購卡推廣產品,僅一周團購訂單GMV就突破百萬。下季度,聚道引擎將推出團購卡直投產品。商家可以直接在App和PC上投放團購卡廣告,并通過App長期進行推廣,實現店內客流穩定。
團購+直播+產品專業化的結合,還可以讓搜索GMV速度翻倍:團購利潤分成配合產品專業化流量管理,及時吸引高意愿群體進入品牌私域,配合直播推廣轉換。數據顯示,在團購+流媒體+產品專業化的加持下,商家每千次搜索的GMV增長了46%。
引領下載搜索:全程啟動再升級,打破瓶蓋有效吸引客戶
除了幫助商家在商圈獲得好生意,聚道引擎還更新了營銷領域的搜索廣告,對商家進行廣告全程跟蹤,有效提升獲客效率和效果。
流量供給方面,“藍海流量寶藏”即將發布。通過藍海關鍵詞推薦,幫助廣告主尋找藍海流量機會,提高流量效率。
內容類型中加入原創圖文樣式,降低廣告主創意輸出門檻,提高投放效率。同時,一張適應引導和下載行業的“聚合卡”可以幫助廣告主提高獲客效率。測試數據顯示,組合卡可有效幫助搜索渠道下載量提升137%,點擊轉化量提升15%。
在商業投放方面,巨引擎將不斷完善與廣告相關的產品或服務信息,幫助廣告主提高廣告競爭力,收集精準流量提高轉化效率。此外,廣告主還可以利用7天周期內的“周期性穩定投入”,解決運費波動較大等問題,實現智能投放和優化。
03 行業解決方案更新,助力商戶突圍
強有力的支持和優質的產品是重要的激勵,但商家要想真正做好生意,還需要適應行業特點的精準博弈。
全鏈路深度管理,實現線索轉化,提質增效
以營銷為主導的行業為例,受決策周期長、轉化路徑復雜等行業特點影響,提升線索效率和轉化效率是營銷人員普遍面臨的問題。
針對精準流量的搜索廣告不僅能有效滲透潛在客群、利用有機流量和商業流量,還能幫助商家打通完美的線索收集和轉化環節。
汽車品牌別克就是通過搜索挖掘新增長點的典型案例之一。別克加強搜索產品投放,觸達現有A3人群,同時獲取新流量。使用搜索出價和搜索后登陸頁面,別克在發布后 7 天內實現了日均搜索量、搜索購買轉化率和搜索量的 84% 增長。交易比例分別增加了15%和20%。 % 分別。
內容廣告雙管齊下,下載行業迎來長期增長
充電行業已經經歷了廣泛的收購階段。要實現用戶增長和付費增長,商家需要做好內容布局和廣告宣傳。搜索可以捕獲受多種類型內容啟發的用戶興趣并縮短下載鏈接。同時,通過搜索廣告投放,商家可以不斷引入新用戶,激活現有用戶,實現注冊、下載、支付等多級轉化目標。
比如《萬國覺醒》這款游戲,通過內容建設和搜索廣告的戰略配合,突破了新增獲客和現有用戶費用的轉化兩大瓶頸。在內容方面,我們為頂級專家的熱門種草視頻添加了較低的搜索詞。投放方面,我們根據用戶歷史關鍵詞優化關鍵詞包,靈活適配內容素材,強化智能選擇和拓展流量的能力。最后,投資后,日均搜索量增加了 44%,搜索消耗量增加了 26%,激活成本下降了 20%。
流量支撐+商業基礎設施,搜索助力線上零售商確定性增長
從電商的角度來看,通過搜索連接內容店和貨架店,構建短鏈播種和收獲環節尤為重要。數據顯示,采購用戶的購買意愿、轉化率、復購率、平均獲客成本、直接投資回報率均高于其他渠道。
同時,搜索不僅為商家提供流量支撐,也是電商商家重要的運營基礎設施。商家不僅可以通過站內場外種草來拓寬搜索范圍,了解流量機會,利用補品來吸引更多意向群體。他們還可以結合用戶搜索意圖,有針對性地優化標題和產品,以提高可見性和轉化機會。
潘婷通過電商搜索開通兩個有流量的域名,實現了滾雪球般的業務增長。潘婷利用云圖的大量關鍵詞洞察,確認了短期、雙倍行距的搜索產品卡和強大的品類關鍵詞的核心布局方向。借力內容場流量,專家種植、短直雙開,利用同一個產品鏈接+不同運價組,靈活投放搜索產品卡,帶動自然流量,覆蓋高意向人群,實現產品GMV和自然月度增長139%交通。實現了110%的增長。
適應本地業務場景,加速突破業務邊界
從當地行業來看,抖音POI對用戶興趣的分布已經成為新的增長引擎。在新產品/新客戶/新商店等情況下,營銷人員可以利用品牌和星圖專家來加快眾包速度,并與搜索引擎合作來推動轉化。在節點的促銷場景中,商戶可以搜索有團購的產品,并促進有效轉化,團購卡。在銷售旺季,商家可以使用團購卡,節省大量投資,擴大當地目的地客流量。
為實現經營效率的整體提升,東方鹽湖城采用團購專家+短視頻+直播深耕提高用戶興趣,配合團購搜索產品+團購卡加速團購活動。購買轉化。最終,日均廣告GMV增長120%。 ,日均 1,000 次搜索的 GMV 環比增長 100%。
總結
品牌正在庫存時代尋找機會,而搜索現在就是一個機會。這已成為各行業貿易商的共識。蔚來作為新勢力汽車品牌,大力涉足搜索產品等核心產品來傳達品牌形象。全面涉足搜索的同程出行,與Deeplink等創新公司共同推動搜索的未來價值。越來越多的品牌正在竭盡全力抓住新的戰略搜索機會。
聚道引擎持續整合平臺資源,更新搜索營銷產品和服務,幫助更多商家抓住搜索商機,激發營銷新未來!
搜索抖音主題#everything,找到海量搜索引擎搜索更多精彩分享和解讀。
僅在頭條號發布,其他平臺均為搬運
圖片來源于網絡,侵刪。
原創不易,歡迎轉發!
對此你有什么看法?歡迎在評論區留言評論!
ava組件生成PDF文件
最近和一位朋友聊自己微信小程序的事情,朋友的建議將小程序的文章給去掉,增加一個新的功能,他說我寫的文章很雞肋。自己聽完之后內心及其猶豫,一方面自己也很清楚自己的文字的功底確實不行,寫的技術文章沒多少人看,但是一直想這個能鍛煉出來。另一方面雖然文章沒人看,但是文章的功能是自己一點一點寫出來的,讓我隱藏起來,我確實有點不想接受。
猶豫幾天,還是決定去除這個功能,剛好最近對于后臺的重構也在進行,所以決定來一個大的改版(估計需要一段時間才能真正上線新的功能)。
今天的文章,也就是在準備的過程中實現的一個功能-導出PDF。
在日常的工作中,利用POI導出Excel的功能需求自己做了不少,但是導出PDF確實是第一次做,在百度上進行一番查閱,發現大家基本都是使用Abode的iText組件來生成PDF。
所以這里也隨大流,選用iText,官網上iText已經到7了,但是百度搜索的案例中,大多用的都是iText5,這里考慮自己對iText不熟悉,所以還是根據案例也選用5,一方面,入手快有現成的代碼可以復制,另一方面用的人多,對于一些常見的坑,填的人也會多,自己就不用一點點摸索了
當然了,如果愿意摸索,可以去官網看案例和API,下面附上官網地址:https://itextpdf.com/en
引入依賴文件
<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.13</version> </dependency> <!-- https://mvnrepository.com/artifact/com.itextpdf/itext-asian --> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itext-asian</artifactId> <version>5.2.0</version> </dependency>
創建Document對象,三種方式:
Document document=new Document(); // 默認頁面大小是A4
Document document=new Document(PageSize.A4); // 指定頁面大小為A4
Document document=new Document(PageSize.A4,50,50,30,20); // 指定頁面大小為A4,且自定義頁邊距(marginLeft、marginRight、marginTop、marginBottom)
創建PdfWriter對象
第一個參數是對文檔對象的引用
第二個參數是需要寫入的PDF文件的實際路徑。我們也可以使用字節數組流實現。
//實際文件 File file=new File("/Users/chenlong/Documents/test.pdf"); PdfWriter writer=PdfWriter.getInstance(document, new FileOutputStream(file)); //字節數組流 ByteArrayOutputStream baos=null; baos=new ByteArrayOutputStream();//構建字節輸出流 PdfWriter.getInstance(doc,baos);//將PDF文檔對象寫入到流
Write對象創建完的操作
首先打開documet(這個過程就像我們創建一個空的pdf文件,然后打開來創作一樣)
然后開始寫入數據
設置文檔屬性
最后關閉
document.open(); document.addTitle("標題"); document.addAuthor("每天學Java"); document.addSubject("測試報表"); document.addKeywords("關鍵字"); document.addCreator("陳龍"); new PDFUtil().generatePDF(document, reportVO); document.close();
而generatePDF方法是自定義的方法,對于文檔內容的填充。
通常我們會用到的內容內容類有:
段落Paragraph 表格table 單元格內容樣式cell 直線 LineSeparator 點線 DottedLineSeparator 超鏈接 Anchor 添加圖片 Image 定位 Anchor 水印功能 Watermark內部類,需要繼承 PdfPageEventHelper類 writer.setPageEvent(new Watermark());
里面的詳細屬性這里就不在說了,我們只看簡單的段落
//字體大小,粗細,顏色 Font titlefont=new Font(bfChinese, 16, Font.BOLD,, BaseColor.RED); //段落 Paragraph paragraph=new Paragraph("測試報表", titlefont); //段落屬性 paragraph.setAlignment(1); //設置文字居中 0靠左 1,居中 2,靠右 paragraph.setIndentationLeft(100); //設置左縮進 paragraph.setIndentationRight(100); //設置右縮進 paragraph.setFirstLineIndent(24); //設置首行縮進 paragraph.setLeading(40f); //行間距 paragraph.setSpacingBefore(5f); //設置段落上空白 paragraph.setSpacingAfter(10f); //設置段落下空白 //分割線 Paragraph p1=new Paragraph(); p1.add(new Chunk(new LineSeparator())); //如果需要換行 paragraph.add(Chunk.NEWLINE); //定義一個塊,塊之間的換行也可以使用Chunk.NEWLINE Chunk chunk=new Chunk("我是一個文本塊"); chunk.setFont(problems); chunk.setWordSpacing(50); paragraph.add(chunk); //需要將段落增加到document中 document.add(paragraph); document.add(p1);
實現過程參考文章:
https://blog.csdn.net/weixin_37848710/article/details/89522862
關于小程序:
之前朋友問我,指望這個掙錢嗎?我也好好的問了自己,如實回答,自己畢業一年多了,小程序也一年多了,我確實希望它通過廣告費啥的掙到錢,但是如果沒有廣告,我覺得還是會去做,因為到了這個階段,每一次代碼的改動和架構的調整,需要我付出學習和思考的時間,而這能讓我拿到現階段我工作中所得不到知識。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。