java根据模板生成pdf文件并导出

Java中的PDF生成 在这个数字化时代,PDF文件已成为传递信息的重要方式。无论是合同、报告,还是技术文档,PDF都因其跨平台兼容性和固定格式而备受青睐。那么,你是否想过如何使用Java生成PDF呢?今天,我们将深入探讨Java中的PDF生成技术,让你轻松掌握这一技能,成为职场中的技术达人。在深入讨论技术细节之前,我们先来简单了解一下PDF。PDF,全称为Portable Document Format,是由Adobe公司在1993年推出的一种文件格式。 阅读详情
AI摘要

本文介绍如何使用Java和itext库生成带有模板的PDF文件,包括制作PDF模板、填充模板内容及解决中文显示问题。

首先你的制作一个pdf模板:

1.先用word做出模板界面


2.文件另存为pdf格式文件


3.通过Adobe Acrobat pro软件打开刚刚用word转换成的pdf文件(注:如果没有这个软件可以通过我的百度云下载,链接:http://pan.baidu.com/s/1pL2klzt)如果无法下载可以联系博主。


4.点击右边的"准备表单"按钮,选择"测试.pdf"选择开始

进去到编辑页面,打开后它会自动侦测并命名表单域,右键表单域,点击属性,出现文本域属性对话框(其实无需任何操作,一般情况下不需要修改什么东西,至少我没有修改哦。如果你想修改fill1等信息,可以进行修改)




5.做完上面的工作后,直接"另存为"将pdf存储就可以


*****************************************************************************

以上部分是制作pdf模板操作,上述完成后,就开始通过程序来根据pdf模板生成pdf文件了,上java程序:

1.首先需要依赖包:itext的jar包,我是maven项目,所以附上maven依赖

<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
		<dependency>
		    <groupId>com.itextpdf</groupId>
		    <artifactId>itextpdf</artifactId>
		    <version>5.5.10</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>
2.下面就是生成pdf代码了

import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.PdfCopy;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;

public class Snippet {
	// 利用模板生成pdf
	public static void fillTemplate() {
		// 模板路径
		String templatePath = "E:/测试3.pdf";
		// 生成的新文件路径
		String newPDFPath = "E:/ceshi.pdf";
		PdfReader reader;
		FileOutputStream out;
		ByteArrayOutputStream bos;
		PdfStamper stamper;
		try {
			out = new FileOutputStream(newPDFPath);// 输出流
			reader = new PdfReader(templatePath);// 读取pdf模板
			bos = new ByteArrayOutputStream();
			stamper = new PdfStamper(reader, bos);
			AcroFields form = stamper.getAcroFields();

			String[] str = { "123456789", "TOP__ONE", "男", "1991-01-01", "130222111133338888", "河北省保定市" };
			int i = 0;
			java.util.Iterator<String> it = form.getFields().keySet().iterator();
			while (it.hasNext()) {
				String name = it.next().toString();
				System.out.println(name);
				form.setField(name, str[i++]);
			}
			stamper.setFormFlattening(true);// 如果为false那么生成的PDF文件还能编辑,一定要设为true
			stamper.close();

			Document doc = new Document();
			PdfCopy copy = new PdfCopy(doc, out);
			doc.open();
			PdfImportedPage importPage = copy.getImportedPage(new PdfReader(bos.toByteArray()), 1);
			copy.addPage(importPage);
			doc.close();

		} catch (IOException e) {
			System.out.println(1);
		} catch (DocumentException e) {
			System.out.println(2);
		}

	}

	public static void main(String[] args) {
		fillTemplate();
	}
}
3.运行结果如下

*********************************************************************

如果没有模板,就行自己生成pdf文件保存到磁盘:下面的方法可以实现:

public static void test1(){//生成pdf
     Document document = new Document();
       try {
           PdfWriter.getInstance(document, new FileOutputStream("E:/1.pdf"));
           document.open();
           document.add(new Paragraph("hello word"));
           document.close();
         } catch (Exception e) {
             System.out.println("file create exception");
         }
     }
但是上述方法中包含中文时就会出现问题,所以可以使用下面这行代码实现,所使用的jar包,上面的两个依赖都包含了:

public static void test1_1(){
      BaseFont bf;
      Font font = null;
      try {
          bf = BaseFont.createFont( "STSong-Light", "UniGB-UCS2-H",
                      BaseFont.NOT_EMBEDDED);//创建字体
          font = new Font(bf,12);//使用字体
      } catch (Exception e) {
          e.printStackTrace();
      }
      Document document = new Document();
      try {
          PdfWriter.getInstance(document, new FileOutputStream("E:/2.pdf"));
          document.open();
          document.add(new Paragraph("hello word 你好 世界",font));//引用字体
          document.close();
         } catch (Exception e) {
             System.out.println("file create exception");
         }
     }
**************************************************************************************

当然,如果你想弄的炫一点,想实现其他字体,可以去网上搜字体文件然后下载下来,放到项目里,我这里是在项目里新建了一个font文件夹,将字体文件放到了里面。

   1.把华康少女的字体文件拷贝到这个文件夹里面了:


运行以下代码就能得到pdf文件

public static void test1_2(){
      BaseFont bf;
      Font font = null;
      try {
//      bf = BaseFont.createFont("font/simsun.ttc,1", //注意这里有一个,1
//            BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);//宋体文字
        bf = BaseFont.createFont("font/华康少女文字W5(P).TTC,1", //simsun.ttc
             BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);//华康少女文字
          font = new Font(bf,12);
      } catch (Exception  e) {
          e.printStackTrace();
     }
     Document document = new Document();
     try {
         PdfWriter.getInstance(document, new FileOutputStream("E:/3.pdf"));
         document.open();
         document.add(new Paragraph("上善若水",font));
         document.close();
     } catch (Exception e) {
        System.out.println("file create exception");
     }
 }



当然,如果你还想换其他字体,就去下载字体文件吧,然后把相关部分替换掉就行,上面注释的是宋体的。。。


***********************以下是转载别人的****************************

以下为转载的别人方法:可以供参考


我们系统需要生成一个可以打印的PDF文档,老板给了我一个Word文档,按照这个Word文档的格式生成PDF文档。

第一步:下载AdobeAcrobat DC,必须使用这个来制作from域。

第二步:使用AdobeAcrobat DC将Word导成PDF文档。

第三步:由于还要加水印的效果,所以还是使用AdobeAcrobat DC来添加水印,非常方便;

    添加水印的方法:使用AdobeAcrobat DC打开PDF文档,“工具”-》“编辑PDF”-》”水印”-》”添加”

添加水印的操作:

点击“确定”:

第四步:使用AdobeAcrobat DC添加From域;

添加From域方法:使用AdobeAcrobat DC打开文档,“工具”-》“准备表单”

点击“开始”:

点击“保存”:

添加“文本域”到我们想要添加内容的位置:

第五步:使用Java代码导出PDF文档;

主要三个类:功能类-PDFTempletTicket

[java]view plain copy
在CODE上查看代码片派生到我的代码片
  1. /** 
  2.  *@Title: PDFTempletTicket.java 
  3.  *@Package: org.csun.ns.util 
  4.  *@Description: TODO 
  5.  *@Author: chisj chisj@foxmail.com 
  6.  *@Date: 2016年4月27日上午11:29:52 
  7.  *@Version V1.0 
  8.  */  
  9. package org.csun.ns.util;  
  10.    
  11. import java.io.ByteArrayOutputStream;  
  12. import java.io.File;  
  13. import java.io.FileOutputStream;  
  14. import java.util.ArrayList;  
  15.    
  16. import org.csun.ns.entity.Ticket;  
  17.    
  18. import com.itextpdf.text.pdf.AcroFields;  
  19. import com.itextpdf.text.pdf.BaseFont;  
  20. import com.itextpdf.text.pdf.PdfReader;  
  21. import com.itextpdf.text.pdf.PdfStamper;  
  22.    
  23. /** 
  24.  *@ClassName: PDFTempletTicket 
  25.  *@Description: TODO 
  26.  *@Author: chisj chisj@foxmail.com 
  27.  *@Date: 2016年4月27日上午11:29:52 
  28.  */  
  29. public class PDFTempletTicket {  
  30.    
  31.          privateString templatePdfPath;  
  32.          privateString ttcPath;  
  33.          privateString targetPdfpath;  
  34.          privateTicket ticket;  
  35.           
  36.           
  37.          publicPDFTempletTicket() {  
  38.                    super();  
  39.          }  
  40.           
  41.          publicPDFTempletTicket(String templatePdfPath, String ttcPath,  
  42.                             StringtargetPdfpath, Ticket ticket) {  
  43.                    this.templatePdfPath= templatePdfPath;  
  44.                    this.ttcPath= ttcPath;  
  45.                    this.targetPdfpath= targetPdfpath;  
  46.                    this.ticket= ticket;  
  47.          }  
  48.           
  49.          publicvoid templetTicket(File file) throws Exception {  
  50.                     
  51.                    PdfReaderreader = new PdfReader(templatePdfPath);  
  52.                    ByteArrayOutputStreambos = new ByteArrayOutputStream();  
  53.                    PdfStamperps = new PdfStamper(reader, bos);  
  54.                     
  55.                    /*使用中文字体 */   
  56.                    BaseFontbf = BaseFont.createFont(PDFTicket.class.getResource("/") +"org/csun/ns/util/simsun.ttc,1",   
  57.                 BaseFont.IDENTITY_H,BaseFont.EMBEDDED);  
  58.        ArrayList<BaseFont> fontList = newArrayList<BaseFont>();   
  59.        fontList.add(bf);   
  60.                     
  61.                    AcroFieldss = ps.getAcroFields();  
  62.                    s.setSubstitutionFonts(fontList);  
  63.    
  64.                    s.setField("ticketId",ticket.getTicketId());  
  65.                    s.setField("ticketCreateTime",ticket.getTicketCreateTime());  
  66.                    s.setField("ticketCompany",ticket.getTicketCompany());  
  67.                    s.setField("sysName",ticket.getSysName());  
  68.                    s.setField("moneyLittle",ticket.getMoneyLittle());  
  69.                    s.setField("moneyBig",ticket.getMoneyBig());  
  70.                    s.setField("accountCompany",ticket.getAccountCompany());  
  71.                    s.setField("bedNumber",ticket.getBedNumber());  
  72.                    s.setField("username",ticket.getUsername());  
  73.                    s.setField("password",ticket.getPassword());  
  74.                     
  75.                     
  76.                    ps.setFormFlattening(true);  
  77.                    ps.close();  
  78.                     
  79.                    FileOutputStreamfos = new FileOutputStream(file);  
  80.                    fos.write(bos.toByteArray());  
  81.                    fos.close();  
  82.          }  
  83.    
  84.          /** 
  85.           * @return the templatePdfPath 
  86.           */  
  87.          publicString getTemplatePdfPath() {  
  88.                    returntemplatePdfPath;  
  89.          }  
  90.    
  91.          /** 
  92.           * @param templatePdfPath the templatePdfPathto set 
  93.           */  
  94.          publicvoid setTemplatePdfPath(String templatePdfPath) {  
  95.                    this.templatePdfPath= templatePdfPath;  
  96.          }  
  97.    
  98.          /** 
  99.           * @return the ttcPath 
  100.           */  
  101.          publicString getTtcPath() {  
  102.                    returnttcPath;  
  103.          }  
  104.    
  105.          /** 
  106.           * @param ttcPath the ttcPath to set 
  107.           */  
  108.          publicvoid setTtcPath(String ttcPath) {  
  109.                    this.ttcPath= ttcPath;  
  110.          }  
  111.    
  112.          /** 
  113.           * @return the targetPdfpath 
  114.           */  
  115.          publicString getTargetPdfpath() {  
  116.                    returntargetPdfpath;  
  117.          }  
  118.    
  119.          /** 
  120.           * @param targetPdfpath the targetPdfpath toset 
  121.           */  
  122.          publicvoid setTargetPdfpath(String targetPdfpath) {  
  123.                    this.targetPdfpath= targetPdfpath;  
  124.          }  
  125.    
  126.          /** 
  127.           * @return the ticket 
  128.           */  
  129.          publicTicket getTicket() {  
  130.                    returnticket;  
  131.          }  
  132.    
  133.          /** 
  134.           * @param ticket the ticket to set 
  135.           */  
  136.          publicvoid setTicket(Ticket ticket) {  
  137.                    this.ticket= ticket;  
  138.          }  
  139.           
  140.           
  141. }  

数据类-Ticket

[java]view plain copy
在CODE上查看代码片派生到我的代码片
  1. /** 
  2.  *@Title: Ticket.java 
  3.  *@Package: org.csun.ns.entity 
  4.  *@Description: TODO 
  5.  *@Author: chisj chisj@foxmail.com 
  6.  *@Date: 2016年4月26日下午7:43:31 
  7.  *@Version V1.0 
  8.  */  
  9. package org.csun.ns.entity;  
  10.    
  11. /** 
  12.  *@ClassName: Ticket 
  13.  *@Description: TODO 
  14.  *@Author: chisj chisj@foxmail.com 
  15.  *@Date: 2016年4月26日下午7:43:31 
  16.  */  
  17. public class Ticket {  
  18.    
  19.          privateString ticketId;  
  20.          privateString homesId;  
  21.          privateString ticketCreateTime;  
  22.          privateString ticketCompany;  
  23.          privateString sysName;  
  24.          privateString moneyLittle;  
  25.          privateString moneyBig;  
  26.          privateString accountCompany;  
  27.          privateString bedNumber;  
  28.          privateString username;  
  29.          privateString password;  
  30.    
  31.          publicTicket() {  
  32.                    super();  
  33.          }  
  34.           
  35.          publicTicket(String ticketId, String homesId, String ticketCreateTime,  
  36.                             StringticketCompany, String sysName, String moneyLittle,  
  37.                             StringmoneyBig, String accountCompany, String bedNumber,  
  38.                             Stringusername, String password) {  
  39.                    this.ticketId= ticketId;  
  40.                    this.homesId= homesId;  
  41.                    this.ticketCreateTime= ticketCreateTime;  
  42.                    this.ticketCompany= ticketCompany;  
  43.                    this.sysName= sysName;  
  44.                    this.moneyLittle= moneyLittle;  
  45.                    this.moneyBig= moneyBig;  
  46.                    this.accountCompany= accountCompany;  
  47.                    this.bedNumber= bedNumber;  
  48.                    this.username= username;  
  49.                    this.password= password;  
  50.          }  
  51.    
  52.          /** 
  53.           * @return the ticketId 
  54.           */  
  55.          publicString getTicketId() {  
  56.                    returnticketId;  
  57.          }  
  58.    
  59.          /** 
  60.           * @param ticketId the ticketId to set 
  61.           */  
  62.          publicvoid setTicketId(String ticketId) {  
  63.                    this.ticketId= ticketId;  
  64.          }  
  65.    
  66.          /** 
  67.           * @return the homesId 
  68.           */  
  69.          publicString getHomesId() {  
  70.                    returnhomesId;  
  71.          }  
  72.    
  73.          /** 
  74.           * @param homesId the homesId to set 
  75.           */  
  76.          publicvoid setHomesId(String homesId) {  
  77.                    this.homesId= homesId;  
  78.          }  
  79.    
  80.          /** 
  81.           * @return the ticketCreateTime 
  82.           */  
  83.          publicString getTicketCreateTime() {  
  84.                    returnticketCreateTime;  
  85.          }  
  86.    
  87.          /** 
  88.           * @param ticketCreateTime the ticketCreateTimeto set 
  89.           */  
  90.          publicvoid setTicketCreateTime(String ticketCreateTime) {  
  91.                    this.ticketCreateTime= ticketCreateTime;  
  92.          }  
  93.    
  94.          /** 
  95.           * @return the ticketCompany 
  96.           */  
  97.          publicString getTicketCompany() {  
  98.                    returnticketCompany;  
  99.          }  
  100.    
  101.          /** 
  102.           * @param ticketCompany the ticketCompany toset 
  103.           */  
  104.          publicvoid setTicketCompany(String ticketCompany) {  
  105.                    this.ticketCompany= ticketCompany;  
  106.          }  
  107.    
  108.          /** 
  109.           * @return the sysName 
  110.           */  
  111.          publicString getSysName() {  
  112.                    returnsysName;  
  113.          }  
  114.    
  115.          /** 
  116.           * @param sysName the sysName to set 
  117.           */  
  118.          publicvoid setSysName(String sysName) {  
  119.                    this.sysName= sysName;  
  120.          }  
  121.    
  122.          /** 
  123.           * @return the moneyLittle 
  124.           */  
  125.          publicString getMoneyLittle() {  
  126.                    returnmoneyLittle;  
  127.          }  
  128.    
  129.          /** 
  130.           * @param moneyLittle the moneyLittle to set 
  131.           */  
  132.          publicvoid setMoneyLittle(String moneyLittle) {  
  133.                    this.moneyLittle= moneyLittle;  
  134.          }  
  135.    
  136.          /** 
  137.           * @return the moneyBig 
  138.           */  
  139.          publicString getMoneyBig() {  
  140.                    returnmoneyBig;  
  141.          }  
  142.    
  143.          /** 
  144.           * @param moneyBig the moneyBig to set 
  145.           */  
  146.          publicvoid setMoneyBig(String moneyBig) {  
  147.                    this.moneyBig= moneyBig;  
  148.          }  
  149.    
  150.          /** 
  151.           * @return the accountCompany 
  152.           */  
  153.          publicString getAccountCompany() {  
  154.                    returnaccountCompany;  
  155.          }  
  156.    
  157.          /** 
  158.           * @param accountCompany the accountCompany toset 
  159.           */  
  160.          publicvoid setAccountCompany(String accountCompany) {  
  161.                    this.accountCompany= accountCompany;  
  162.          }  
  163.    
  164.          /** 
  165.           * @return the bedNumber 
  166.           */  
  167.          publicString getBedNumber() {  
  168.                    returnbedNumber;  
  169.          }  
  170.    
  171.          /** 
  172.           * @param bedNumber the bedNumber to set 
  173.           */  
  174.          publicvoid setBedNumber(String bedNumber) {  
  175.                    this.bedNumber= bedNumber;  
  176.          }  
  177.    
  178.          /** 
  179.           * @return the username 
  180.           */  
  181.          publicString getUsername() {  
  182.                    returnusername;  
  183.          }  
  184.    
  185.          /** 
  186.           * @param username the username to set 
  187.           */  
  188.          publicvoid setUsername(String username) {  
  189.                    this.username= username;  
  190.          }  
  191.    
  192.          /** 
  193.           * @return the password 
  194.           */  
  195.          publicString getPassword() {  
  196.                    returnpassword;  
  197.          }  
  198.    
  199.          /** 
  200.           * @param password the password to set 
  201.           */  
  202.          publicvoid setPassword(String password) {  
  203.                    this.password= password;  
  204.          }  
  205.           
  206. }  

测试类-TestTempletTicket

[java]view plain copy
在CODE上查看代码片派生到我的代码片
  1. /** 
  2.  *@Title: TestTempletTicket.java 
  3.  *@Package: org.csun.ns.util 
  4.  *@Description: TODO 
  5.  *@Author: chisj chisj@foxmail.com 
  6.  *@Date: 2016年4月27日下午1:31:23 
  7.  *@Version V1.0 
  8.  */  
  9. package org.csun.ns.util;  
  10.    
  11. import java.io.File;  
  12.    
  13. import org.csun.ns.client.OSSConfigure;  
  14. import org.csun.ns.client.OSSUtil;  
  15. import org.csun.ns.entity.Ticket;  
  16.    
  17. /** 
  18.  *@ClassName: TestTempletTicket 
  19.  *@Description: TODO 
  20.  *@Author: chisj chisj@foxmail.com 
  21.  *@Date: 2016年4月27日下午1:31:23 
  22.  */  
  23. public class TestTempletTicket {  
  24.    
  25.          publicstatic void main(String[] args) throws Exception {  
  26.                     
  27.                    Ticketticket = new Ticket();  
  28.                     
  29.                    ticket.setTicketId("2016042710000");  
  30.                    ticket.setTicketCreateTime("2016年4月27日");  
  31.                    ticket.setTicketCompany("武汉日创科技有限公司");  
  32.                    ticket.setSysName("智能看护系统");  
  33.                    ticket.setMoneyLittle("50,000.00");  
  34.                    ticket.setMoneyBig("伍万元整");  
  35.                    ticket.setAccountCompany("洪山福利院");  
  36.                    ticket.setBedNumber("500床位");  
  37.                    ticket.setUsername("qiu");  
  38.                    ticket.setPassword("123456");  
  39.                     
  40.                    PDFTempletTicketpdfTT = new PDFTempletTicket();  
  41.                     
  42.                   pdfTT.setTemplatePdfPath("D:\\ticket_from.pdf");  
  43.                    pdfTT.setTargetPdfpath("D:\\aaabbbccc.pdf");  
  44.                    pdfTT.setTicket(ticket);  
  45.                     
  46.                    Filefile = new File("D:\\aaabbbccc.pdf");  
  47.                    file.createNewFile();  
  48.                    pdfTT.templetTicket(file);  
  49.                     
  50.                    //OSSConfigureconfig = OSSUtil.getOSSConfigure();  
  51.        //OSSManageUtil.uploadFile(config, file, "aaabbbccc.pdf","pdf", "ticket/" + "aaabbbccc");  
  52.          
  53.        //System.out.println("path = " + config.getAccessUrl());  
  54.                     
  55.          }  
  56.           
  57. }  

导出来后的结果:

备注:导出PDF文档,From域的内容不可见问题;iText找不到字体;

问题1:我开始导出的From域内容看不到,将ps.setFormFlattening(true);设置为flase后,可以看到From域,还是看不到内容,我点击进入From后可以看到内容,该方法是将From域隐藏;后来看到有人设置From域内容的字体:BaseFontbf = BaseFont.createFont(PDFTicket.class.getResource("/") +"org/csun/ns/util/simsun.ttc,1", 

                BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

以及:

s.setSubstitutionFonts(fontList);

问题2:别人的代码:

BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

会报找不到字体的错误,这里的解决方式就是通过使用自己的字体就好,simsun.ttc是Windows下面自带的字体(简体宋体:C:\Windows\Fonts下面有很多字体可以使用)

******************************以上是转载************************************



java根据模板生成pdf文件(itextpdf) 阅读详情

相关推荐

JAVA根据模板填充,生成PDF文件

项目场景: 需求:根据客户模板,生成对应PDF文件。 例如:客户的doc模板文件: 最终效果展示: 话不多说,上操作: 1.引入pdf相关的依赖 <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> </dependency> <!

qq_41114874的博客 7067

Java使用pdf模板生成pdf文件

有时候,业务中我们需要使用pdf模板生成一份pdf文件。如何生成pdf文件?如下,我们把左侧的模板生成为右侧的填充文件。

不积跬步,无以至千里 2万+

java根据pdf模板生成一个pdf文件(批量数据)并导出(iText)

java根据模板生成pdf文件并导出(iText)

wfzlm的博客 3290

Java-根据模板生成PDF

在有些场景下我们可能需要根据指定的模板来生成 PDF,比如说合同、收据、发票等等。因为 PDF 是不可编辑的,所以用代码直接对 PDF 文件进行修改是很不方便的,这里我是通过itext和来实现的,以下就是具体实现方法。个人觉得代码实现起来不是很难,关键是要知道如何使用工具设置 PDF 模板以及itext的一些 API 的使用,以后有时间我会出一篇关于iText的博客,主要介绍iText在日常开发中的主要应用。为何选择iText?

xhmico的博客 1万+

【RK3588开发记录】超详细的RK3588修改debug串口波特率为115200

修改RK3588的debug串口为115200

Crazydrams的博客 4805

【技术实战】SeaTunnel 实现 HTTP 到 Doris 数据同步的配置优化与问题解决

本文分享了使用SeaTunnel实现HTTP数据源到Doris数仓同步的实战经验。详细解析了从环境搭建、核心配置到生产部署的全流程,重点针对数据类型映射、分页拉取、依赖冲突等典型问题提供了解决方案,并给出了连接参数调优、错误处理等进阶优化技巧,帮助开发者构建稳定高效的数据同步管道。

gan8painter的博客 753

JAVA根据模板生成PDF文件并导出

JAVA根据模板生成并导出PDF 实现功能 根据模板生成PDF文件,模板文件参数可配,可手动修改. 一 : PDF导出效果 先看一下导出的demo文件,具体样式可手动修改 下图为demo_pdf.ftl导出PDF文件 下图为list_pdf.ftl导出PDF文件 二 : 编写PDF模板 PDF文件模板,使用原生HTML文件编写,编写完成样式等参数,将文件后缀名修改为 .ftl 模板文件配置 ...

qq_38254635的博客 2万+

QT日志输出终极指南:从qDebug到qFatal的完整文件记录方案

本文深入探讨了QT日志系统的企业级文件记录方案,从基础的qDebug、qWarning、qCritical、qFatal等宏的使用,到构建自定义消息处理器、实现异步写入、分级存储、日志轮转及性能监控等高级功能。旨在帮助开发者构建一个稳定、高效且易于维护的专业级日志管理架构,适用于桌面应用、嵌入式系统及服务端程序。

ik678901234的博客 909

java根据模板生成pdf文件并导出(iText)

java根据模板生成pdf文件并导出首先你的制作一个pdf模板:1.先用word做出模板界面2.文件另存为pdf格式文件3.通过Adobe Acrobat pro软件打开刚刚用word转换成的pdf文件(注:如果没有这个软件可以通过我的百度云下载,链接:http://pan.baidu.com/s/1pL2klzt)如果无法下载可以联系博主。4.点击右边的"准备表单"按钮,选择"测试.pdf"选择...

小小刚优快云 2万+

cpp中auto, auto &和const auto &的区别

笔者初学cpp,如有纰漏,请见谅并指正。 用在哪 auto用于推断类型,具体可用于声明变量时根据初始化表达式自动推断该变量的类型,也就是可用在for循环。 也可以用于声明函数返回值的占位符。 怎么用 这里主要讲for循环中三者的区别 直接说结论 auto auto用于copy一份集合中的数据,对于这种情况,在循环体中不论怎么修改copy的数据,是不会影响到原有集合中的数据的。 举个简单的例子 int arr[5] = {0, 1, 2, 3, 4}; cout << "使用auto" <&

NinoSun的博客 3176

一文说清STM32CubeMX中文汉化全流程(图解说明)

详细讲解STM32CubeMX中文汉化的完整流程,通过图文并茂的方式手把手教学,解决界面英文带来的使用障碍,让开发更高效。掌握stm32cubemx中文汉化技巧,提升嵌入式开发体验。

weixin_42499004的博客 6275

【亲测免费】 JAVA根据模板生成PDF文件并导出

JAVA根据模板生成PDF文件并导出 【下载地址】JAVA根据模板生成PDF文件并导出分享 JAVA根据模板生成PDF文件并导出本仓库提供了一套完整的解决方案,用于帮助开发者实现使用Java根据模板生成PDF文件并能够将其导出的功能 ...

gitblog_06589的博客 405

全志平台camera驱动开发(3)MIPI接口camera驱动开发

详细沟通: 请加video_D 目前开发过的allwinner平台: V5/V3/V3S/V40/T3/T7/A64等 开发过的mipi sensor: sony:imx317、imx477、imx274、imx258、imx286、imx307、imx385等 ov:ov2718、ov12895、ov2710等 ar: ar0238等 国产:gc1024、gc1034...

jzwjzw19900922的博客 9030

java 根据PDF模板生成PDF文件并导出

1.准备操作的maven包 <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.1</version> </dependency> <depen...

夜的博客 1万+

STM32H743的FDCAN使用方法(1):STM32CubeMX初始化代码生成

STM32H743的FDCAN使用方法(1):STM32CubeMX初始化代码生成。

kevin1499的博客 2566

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java导出pdf文件并下载_java根据模板生成pdf文件并导出

1.首先需要依赖包:itext的jar包,我是maven项目,所以附上maven依赖[html] view plain copycom.itextpdfitextpdf5.5.10[html] view plain copycom.itextpdfitext-asian5.2.02.下面就是生成pdf代码了[java] view plain copyimport java.io.ByteArray...

weixin_33542801的博客 2108

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Java根据模板生成pdf文件并导出

原文地址:http://blog.youkuaiyun.com/TOP__ONE/article/details/65442390首先你的制作一个pdf模板:1.先用word做出模板界面2.文件另存为pdf格式文件3.通过Adobe Acrobat pro软件打开刚刚用word转换成的pdf文件(注:如果没有这个软件可以通过我的百度云下载,链接:http://pan.baidu.com/s/1pL2klzt)...

杨春建的博客 7723

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java maven 读写pdf_java 根据PDF模板生成PDF文件并导出

1.准备操作的maven包com.itextpdfitextpdf5.5.1com.itextpdfitext-asian5.2.02.准备好你需要操作的PDF模板3.准备好Adobe Acrobat Distiller DC 工具4.使用Adobe Acrobat 打开你准备好的pdf模板,如图: 打开工具栏,找到准备表单 打开后,你就可以对你需要赋值的PDF表单进行字段的编辑,如下图: 5.使...

weixin_31774171的博客 512

java根据模板生成pdf文件并导出(转)

首先制作PDF模板文件 首先你的制作一个pdf模板: 1.先用word做出模板界面 2.文件另存为pdf格式文件 3.通过Adobe Acrobat pro软件打开刚刚用word转换成的pdf文件(下载 Adobe Acrobat pro 破解版) 4.点击右边的"准备表单"按钮,选择"测试.pdf"选择

wy240036141的博客 4155

Java根据模版导出PDF文件

本文介绍了如何使用Java生成PDF文件。首先需要准备PDF模板文件,使用AcrobatProPortable工具编辑模板样式和表单字段。Java实现部分需引入itextpdf相关依赖,通过PdfReader读取模板,PdfStamper填充数据。关键步骤包括:设置中文字体(推荐使用simsunb.ttf)、使用键值对填充表单字段、设置表单不可编辑、生成最终PDF文件。代码示例展示了如何从数据库获取数据并填充到PDF模板中,生成物资出门证明文件。文章提供了完整的依赖配置和代码实现,适合需要PDF导出功能的J

ZHUSHANGLIN的博客 371
上一篇: linux下文件夹的创建、复制、剪切、重命名、清空和删除命令
下一篇: java实现发送邮件
TOP__ONE
博客等级 码龄10年 74粉丝 117原创
评论 72
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值