一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務(wù)器之家 - 編程語言 - Java教程 - Java創(chuàng)建和填充PDF表單域方法

Java創(chuàng)建和填充PDF表單域方法

2021-07-12 15:03Java之家 Java教程

在本篇文章中小編給大家分享了關(guān)于Java創(chuàng)建和填充PDF表單域方法和步驟,有需要的朋友們學(xué)習(xí)下。

表單域,可以按用途分為多種不同的類型,常見的有文本框、多行文本框、密碼框、隱藏域、復(fù)選框、單選框和下拉選擇框等,目的是用于采集用戶的輸入或選擇的數(shù)據(jù)。下面的示例中,將分享通過java編程在pdf中添加以及填充表單域的方法。這里填充表單域可分為2種情況,一種是在創(chuàng)建表單域時填充,一種是加載已經(jīng)創(chuàng)建好表單域的文檔進(jìn)行填充。此外,對于已經(jīng)創(chuàng)建表單域并填寫好的文檔,也可以設(shè)置只讀,防止修改、編輯。

要點概括:

1.創(chuàng)建表單域

2.填充表單域

3.設(shè)置表單域只讀

工具:free spire.pdf for java v2.0.0(免費(fèi)版)

jar文件導(dǎo)入

步驟1:在java程序中新建一個文件夾可命名為lib。并將產(chǎn)品包中的2個jar文件復(fù)制到新建的文件夾下。

Java創(chuàng)建和填充PDF表單域方法

步驟2:復(fù)制文件后,添加到引用類庫:選中這兩個jar文件,點擊鼠標(biāo)右鍵,選擇“build path” – “add to build path”。完成引用。

Java創(chuàng)建和填充PDF表單域方法

java代碼示例(供參考)

1.創(chuàng)建并填充pdf表單域

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
import java.awt.*;
import java.awt.geom.point2d;
import java.awt.geom.rectangle2d;
import com.spire.pdf.fileformat;
import com.spire.pdf.pdfdocument;
import com.spire.pdf.pdfpagebase;
import com.spire.pdf.fields.*;
import com.spire.pdf.graphics.*;
 
public class addformfieldstopdf {
 
 public static void main(string[] args) throws exception {
   
  //創(chuàng)建pdfdocument對象,并添加頁面
  pdfdocument doc = new pdfdocument(); 
  pdfpagebase page = doc.getpages().add();
 
  //初始化位置變量
  float basex = 100;
  float basey = 0;
 
  //創(chuàng)建畫刷對象
  pdfsolidbrush brush1 = new pdfsolidbrush(new pdfrgbcolor(color.blue));
  pdfsolidbrush brush2 = new pdfsolidbrush(new pdfrgbcolor(color.black));
   
  //創(chuàng)建truetype字體
  pdftruetypefont font= new pdftruetypefont(new font("arial unicode ms",font.plain,10),true);
 
  //添加文本框
  string text = "姓名:";//添加文本
  page.getcanvas().drawstring(text, font, brush1, new point2d.float(0, basey));//在pdf中繪制文字
  rectangle2d.float tbxbounds = new rectangle2d.float(basex, basey , 150, 15);//創(chuàng)建rectangle2d對象
  pdftextboxfield textbox = new pdftextboxfield(page, "textbox");//創(chuàng)建文本框?qū)ο?/code>
  textbox.setbounds(tbxbounds);//設(shè)置文本框的bounds
  textbox.settext("劉興");//填充文本框
  textbox.setfont(font);//應(yīng)用文本框的字體
  doc.getform().getfields().add(textbox);//添加文本框到pdf域的集合
  basey +=25;
 
  //添加復(fù)選框
  page.getcanvas().drawstring("所在院系:", font, brush1, new point2d.float(0, basey));
  java.awt.geom.rectangle2d.float rec1 = new java.awt.geom.rectangle2d.float(basex, basey, 15, 15);
  pdfcheckboxfield checkboxfield = new pdfcheckboxfield(page, "checkbox1");//創(chuàng)建第一個復(fù)選框?qū)ο?/code>
  checkboxfield.setbounds(rec1);
  checkboxfield.setchecked(false);//填充復(fù)選框
  page.getcanvas().drawstring("經(jīng)管系", font, brush2, new point2d.float(basex + 20, basey));
  java.awt.geom.rectangle2d.float rec2 = new java.awt.geom.rectangle2d.float(basex + 70, basey, 15, 15);
  pdfcheckboxfield checkboxfield1 = new pdfcheckboxfield(page, "checkbox2");//創(chuàng)建第二個復(fù)選框?qū)ο?/code>
  checkboxfield1.setbounds(rec2);
  checkboxfield1.setchecked(true);//填充復(fù)選框
  page.getcanvas().drawstring("創(chuàng)新班", font, brush2, new point2d.float(basex+90, basey)); 
  doc.getform().getfields().add(checkboxfield);//添加復(fù)選框到pdf
  basey += 25;
 
  //添加列表框
  page.getcanvas().drawstring("錄取批次:", font, brush1, new point2d.float(0, basey));
  java.awt.geom.rectangle2d.float rec = new java.awt.geom.rectangle2d.float(basex, basey, 150, 50);
  pdflistboxfield listboxfield = new pdflistboxfield(page, "listbox");//創(chuàng)建列表框?qū)ο?/code>
  listboxfield.getitems().add(new pdflistfielditem("第一批次", "item1"));
  listboxfield.getitems().add(new pdflistfielditem("第二批次", "item2"));
  listboxfield.getitems().add(new pdflistfielditem("第三批次", "item3"));;
  listboxfield.setbounds(rec);
  listboxfield.setfont(font);
  listboxfield.setselectedindex(0);//填充列表框
  doc.getform().getfields().add(listboxfield);//添加列表框到pdf
  basey += 60;
 
  //添加單選按鈕
  page.getcanvas().drawstring("招收方式:", font, brush1, new point2d.float(0, basey));
  pdfradiobuttonlistfield radiobuttonlistfield = new pdfradiobuttonlistfield(page, "radio");//創(chuàng)建單選按鈕對象
  pdfradiobuttonlistitem radioitem1 = new pdfradiobuttonlistitem("item1");//創(chuàng)建第一個單選按鈕
  radioitem1.setbounds(new rectangle2d.float(basex, basey, 15, 15));
  page.getcanvas().drawstring("全日制", font, brush2, new point2d.float(basex + 20, basey));
  pdfradiobuttonlistitem radioitem2 = new pdfradiobuttonlistitem("item2");//創(chuàng)建第二個單選按鈕
  radioitem2.setbounds(new rectangle2d.float(basex + 70, basey, 15, 15));
  page.getcanvas().drawstring("成人教育", font, brush2, new point2d.float(basex + 90, basey));
  radiobuttonlistfield.getitems().add(radioitem1);
  radiobuttonlistfield.getitems().add(radioitem2);
  radiobuttonlistfield.setselectedindex(0);//選擇填充第一個單選按鈕
  doc.getform().getfields().add(radiobuttonlistfield);//添加單選按鈕到pdf
  basey += 25;
 
  //添加組合框
  page.getcanvas().drawstring("最高學(xué)歷:", font, brush1, new point2d.float(0, basey));
  rectangle2d.float cmbbounds = new rectangle2d.float(basex, basey, 150, 15);//創(chuàng)建cmbbounds對象
  pdfcomboboxfield comboboxfield = new pdfcomboboxfield(page, "combobox");//創(chuàng)建comboboxfield對象
  comboboxfield.setbounds(cmbbounds);
  comboboxfield.getitems().add(new pdflistfielditem("博士", "item1"));
  comboboxfield.getitems().add(new pdflistfielditem("碩士", "itme2"));
  comboboxfield.getitems().add(new pdflistfielditem("本科", "item3"));
  comboboxfield.getitems().add(new pdflistfielditem("大專", "item4"));
  comboboxfield.setselectedindex(0); 
  comboboxfield.setfont(font);
  doc.getform().getfields().add(comboboxfield);//添加組合框到pdf
  basey += 25;
 
  //添加簽名域
  page.getcanvas().drawstring("本人簽字確認(rèn)\n以上信息屬實:", font, brush1, new point2d.float(0, basey));
  pdfsignaturefield sgnfield= new pdfsignaturefield(page,"sgnfield");//創(chuàng)建sgnfield對象
  rectangle2d.float sgnbounds = new rectangle2d.float(basex, basey, 150, 80);//創(chuàng)建sgnbounds對象
  sgnfield.setbounds(sgnbounds);  
  doc.getform().getfields().add(sgnfield);//添加sgnfield到pdf
  basey += 90;
 
  //添加按鈕
  page.getcanvas().drawstring("", font, brush1, new point2d.float(0, basey));
  rectangle2d.float btnbounds = new rectangle2d.float(basex, basey, 50, 15);//創(chuàng)建btnbounds對象
  pdfbuttonfield buttonfield = new pdfbuttonfield(page, "button");//創(chuàng)建buttonfield對象
  buttonfield.setbounds(btnbounds);
  buttonfield.settext("提交");//設(shè)置按鈕顯示文本
  buttonfield.setfont(font);
  doc.getform().getfields().add(buttonfield);//添加按鈕到pdf
   
  //保存文檔
  doc.savetofile("result.pdf", fileformat.pdf);   
 }
}

創(chuàng)建(填充)效果:

Java創(chuàng)建和填充PDF表單域方法

2.加載并填充已有的表單域文檔

測試文檔如下:

Java創(chuàng)建和填充PDF表單域方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import com.spire.pdf.fileformat;
import com.spire.pdf.pdfdocument;
import com.spire.pdf.fields.pdffield;
import com.spire.pdf.widget.*;
 
public class fillformfield_pdf{
 public static void main(string[] args){
   
  //創(chuàng)建pdfdocument對象,并加載pdf文檔
  pdfdocument doc = new pdfdocument();
  doc.loadfromfile("output.pdf");
 
  //獲取文檔中的域
  pdfformwidget form = (pdfformwidget) doc.getform(); 
  //獲取域控件集合
  pdfformfieldwidgetcollection formwidgetcollection = form.getfieldswidget();
 
  //遍歷域控件并填充數(shù)據(jù)
  for (int i = 0; i < formwidgetcollection.getcount(); i++) {
    
   pdffield field = formwidgetcollection.get(i);  
   if (field instanceof pdftextboxfieldwidget) {
    pdftextboxfieldwidget textboxfield = (pdftextboxfieldwidget) field;
    textboxfield.settext("吳 敏");
   }
   if (field instanceof pdfcheckboxwidgetfieldwidget) {
    pdfcheckboxwidgetfieldwidget checkboxfield = (pdfcheckboxwidgetfieldwidget) field;
    switch(checkboxfield.getname()){
    case "checkbox1":
     checkboxfield.setchecked(true);
     break;
    case "checkbox2":
     checkboxfield.setchecked(true);
     break;
    }
   }
   if (field instanceof pdfradiobuttonlistfieldwidget) {
    pdfradiobuttonlistfieldwidget radiobuttonlistfield = (pdfradiobuttonlistfieldwidget) field;
    radiobuttonlistfield.setselectedindex(1);
   }
   if (field instanceof pdflistboxwidgetfieldwidget) {
    pdflistboxwidgetfieldwidget listbox = (pdflistboxwidgetfieldwidget) field;
    listbox.setselectedindex(1);
   }
    
   if (field instanceof pdfcomboboxwidgetfieldwidget) {
    pdfcomboboxwidgetfieldwidget comboboxfield = (pdfcomboboxwidgetfieldwidget) field;
    comboboxfield.setselectedindex(1);
   }
  }
   
  //保存文檔
  doc.savetofile("fillformfields.pdf", fileformat.pdf);
 }
}

填充效果:

Java創(chuàng)建和填充PDF表單域方法

3.限制表單域編輯(只讀)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import com.spire.pdf.pdfdocument;
 
public class fieldreadonly_pdf {
 public static void main(string[] args) throws exception {
 {
 //創(chuàng)建pdfdocument對象,并加載包含表單域的pdf文檔
 pdfdocument pdf = new pdfdocument();
 pdf.loadfromfile("test.pdf");
  
  //將文檔中的所有表單域設(shè)置為只讀
  pdf.getform().setreadonly(true);
  
  //保存文檔
  pdf.savetofile("result.pdf");
  }
 }

生成的文檔中,表單域?qū)⒉豢删庉嫞瑸橹蛔x狀態(tài)

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲一区二区精品视频 | 九九精品视频一区二区三区 | 欧美日韩成人在线视频 | 亚洲欧美综合区自拍另类 | 成人深夜视频 | 四虎最新免费网址 | 人与善交大片免费看 | jazz中国在线视频 | japanese在线看 | 亚洲欧美日本在线观看 | 日韩欧美一区二区三区四区 | 免费看视频| 午夜精品久久久久久 | 国内体内she精视频免费 | 亚洲国产99999在线精品一区 | 天天干天天色综合 | 国产成人福利美女观看视频 | 小莹的性荡生活45章 | 亚洲品质自拍视频 | 久久se视频精品视频在线 | 4tube高清性欧美| 亚洲人成网站在线观看90影院 | 色综合91久久精品中文字幕 | www.男人天堂 | 精品亚洲一区二区三区在线播放 | 高清视频免费 | 2022最新国产在线 | 欧美xingai| 黄a 大片a v 永久免费 | 亚洲咪咪 | 国产老太婆hd老头 | 爆操| 视频免费视频观看网站 | 男人的天堂久久爱 | 欧美又黄又激烈真实床戏 | 草逼吧| 日本中文字幕二区三区 | 国产一区二区三区欧美精品 | 视频二区 素人 欧美 日韩 | 四虎论坛| 国精视频一区二区视频 |