There are about three ways to search online: PDF template data fill, HTML code conversion PDF, borrow Wkhtmltopdf tool one. PDF template Data fill 1. Create a new word, make an empty form in Word that has the same layout as the form, and then save as pdf;2. Using the PDF Editing Tool, use the Prepare Form tool to set up a text box or image frame where dynamic data needs to be populated, and to get a good label name. 3. Insert the data into the PDF according to the label signature and export the PDF to the specified location.
String rootpath= "d:/"; String Path=rootpath+ "Dzyjjsdjd.pdf"; System.out.println ("Electronic file transfer and receipt of registration form template location:" +path); SimpleDateFormat DF=NewSimpleDateFormat ("Yyyymmddhhmmss");//Set Date formatString Newpath=rootpath+df.format (NewDate ()) + "Dzyjjsdjd.pdf"; //Read PDF FormPdfreader reader =NewPdfreader (path); //generate a new PDF based on the formPdfstamper PS =NewPdfstamper (Reader,NewFileOutputStream (NewPath)); //get PDF FormAcrofields s =Ps.getacrofields (); //Add a Chinese font to a form this uses the system font. If not set, Chinese may not displayBasefont bf = Basefont.createfont ("C:/windows/fonts/simsun. ttc,1 ", Basefont.identity_h, basefont.embedded); S.addsubstitutionfont (BF); //Iterate through PDF forms and assign values to tablesMap<string,string> Paramap=getmapdata (accept);//your own data, encapsulated into the map by the form labels set in the template for(String key:paraMap.keySet ()) {if(Key.equals ("YZ1")) {//get a PDF tag labeled YZ1, set its valueString value =Paramap.get (key); TempImgPath1=rootpath+ "Yz1.png"; Insertimage (PS, tempImgPath1,"Yz1", s); //after inserting the picture, we need to get rid of the picture frame of the set, otherwise it will cover the picture that is currently inserted.S.removefield ("Yz1"); }Else{String value=Paramap.get (key); S.setfield (key, value); //Assigning a value to a field, note that the field name is case-sensitive}} ps.setformflattening (true);//This sentence must not be lessPs.close (); Reader.close ();
/*** Insert Picture into PDF *@paramPS PDF Object *@paramimg need to insert the picture path *@paramCol needs to insert a picture's PDF field label name *@params PDF Field*/ Public voidInsertimage (pdfstamper PS, String img,string col,acrofields s) {Try{List<AcroFields.FieldPosition> list =S.getfieldpositions (COL); Rectangle Signrect= List.get (0). Position; Image Image=image.getinstance (IMG); Pdfcontentbyte under= Ps.getovercontent (1);//the number of pages to insert into the picture, now only 1 pages floatx =Signrect.getleft (); floaty =Signrect.getbottom (); SYSTEM.OUT.PRINTLN (x); System.out.println (y); Image.setabsoluteposition (x, y); Image.scaletofit (Signrect.getwidth (), Signrect.getheight ()); Under.addimage (image); } Catch(Exception e) {//TODO auto-generated Catch blockE.printstacktrace (); } }
/*** Insert Text * *@return * @authorWangmeng * @date June 16, 2016*/ Public Static voidInsertText (Pdfstamper PS, acrofields s) {List<AcroFields.FieldPosition> list = s.getfieldpositions ("Connect_name"); Rectangle rect= List.get (0). Position; Pdfcontentbyte CB= Ps.getovercontent (1); pdfptable Table=NewPdfptable (1); floatTatalwidth = Rect.getright ()-Rect.getleft ()-1; Table.settotalwidth (Tatalwidth); Pdfpcell Cell=NewPdfpcell (NewPhrase (Createchunk ())); Cell.setfixedheight (Rect.gettop ()-Rect.getbottom ()-1); Cell.setborderwidth (0); Cell.setverticalalignment (Element.align_middle); Cell.sethorizontalalignment (Element.align_center); Cell.setleading (0, (float) 1.1); Table.addcell (cell); Table.writeselectedrows (0,-1, Rect.getleft (), Rect.gettop (), CB); }
The second type: Convert HTML code to PDF
ImportJava.io.ByteArrayInputStream;ImportJava.io.FileInputStream;ImportJava.io.FileOutputStream;Importcom.itextpdf.text.Document;Importcom.itextpdf.text.PageSize;ImportCom.itextpdf.text.pdf.PdfWriter;ImportCom.itextpdf.tool.xml.XMLWorkerHelper; Public classHtmltopdf { Public Static voidMain (string[] args) {Try{Document Document=NewDocument (Pagesize.letter); PDFWriter PDFWriter=pdfwriter.getinstance (document,NewFileOutputStream ("C://temp//testpdf.pdf")); Document.open (); Document.addauthor ("Ysjiang"); Document.addcreator ("Ysjiang"); Document.addsubject ("Test"); Document.addcreationdate (); Document.addtitle ("XHTML to PDF"); Xmlworkerhelper worker=xmlworkerhelper.getinstance (); String Str= "<! DOCTYPE HTML public \ "-//W3C//DTD XHTML 1.0 transitional//en\" \ "http://www.w3.org/TR/xhtml1/DTD/ Xhtml1-transitional.dtd\ ">" + "; //worker.parsexhtml (PDFWriter, document, New FileInputStream ("c:\\tmp\\a.htm"), NULL, New Asianfontprovider ());String url= "g:/workproject_ces/zjdzyjjsxt/webroot/module/receive/register/input.jsp?pid=4&sign=0&tagg= Undo&workitemid=149982394754705&activityname=rk&returnreason=&activityid=receive&time=mon Jul 14:25:49 gmt+0800 (?? -???? ??????? é?′) "; Worker.parsexhtml (PDFWriter, document,NewBytearrayinputstream (Str.getbytes ()),NULL,NewAsianfontprovider ()); Xmlworkerhelper.getinstance (). parsexhtml (PDFWriter, document,Newfileinputstream (URL)); Document.close (); System.out.println ("Done."); } Catch(Exception e) {e.printstacktrace (); } }}
The third kind of reference http://blog.csdn.net/zhangkezhi_471885889/article/details/52184700, because the use of external tools, so the deployment time will be a little more trouble, according to the need to choose their own way
Convert a form to PDF in Java