æ¬æå
åè¿°ï¼å¦ä½æä½PDF模æ¿çæPDFæ件ï¼å说æå¨SpringMVCä¸å¦ä½æ ¹æ®PDF模æ¿çæPDFæ件ã
使ç¨PDF模æ¿çæPDFæ件éè¦ä»¥ä¸å 个æ¥éª¤ï¼
ä¸é¢ææ¥éª¤è¯´æï¼
1. 使ç¨Microsoft Office Wordç»å¥½æ¨¡æ¿
æ¤æ¥éª¤å°±ä¸è¯¦è¿°äºï¼å°±æ¯ä¸ä¸ªæ®éçWordæ件ï¼template.docxï¼ãç»ä¸ªç¤ºä¾æªå¾ï¼
2. 使ç¨Adobe Acrobat X Proå°Wordæ件转æ¢ä¸ºå¸¦è¡¨åå段çPDF模æ¿æ件
1) æå¼Adobe Acrobat X Pro
2) éæ©âå建PDF表åâ
3) éæ©æºï¼ï¼PDFãWordãExcelæå
¶å®æ件类åï¼ï¼ä¸ä¸æ¥
4) å®ä½Wordæ件路å¾ï¼ä¸ä¸æ¥
5) Adobe Acrobat X Proä¼èªå¨çæµè¡¨åå段ä½ç½®ï¼å¦å¾
6) ä¸è¬çæç表åå段é½ä¸ç¬¦åæ们çè¦æ±ï¼éä¸å é¤å³å¯ã
7) ç¹å»å³é®éæ©ææ¬æ¡ï¼æå¨å°éå½çä½ç½®ï¼è®¾ç½®å¥½åå称ï¼åå·ï¼åä½çã
8) ä¿å模æ¿æ件ãï¼template.pdfï¼
3. 使ç¨itextæä½PDF模æ¿ï¼å¡«å
æ°æ®ï¼çæPDFæ件
1) éè¦jarå
ï¼itext.jarãitextAsian.jar
2) æ ¸å¿ä»£ç ï¼
package personal.hutao.test;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.AcroFields;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfStamper;
public class TestPdf {
@Test
public void test() throws IOException, DocumentException {
String fileName = "D:/template.pdf"; // pdf模æ¿
PdfReader reader = new PdfReader(fileName);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
PdfStamper ps = new PdfStamper(reader, bos);
AcroFields fields = ps.getAcroFields();
fillData(fields, data());
ps.setFormFlattening(true);
ps.close();
OutputStream fos = new FileOutputStream("D:/contract.pdf");
fos.write(bos.toByteArray());
}
public void fillData(AcroFields fields, Map<String, String> data) throws IOException, DocumentException {
for (String key : data.keySet()) {
String value = data.get(key);
fields.setField(key, value);
}
}
public Map<String, String> data() {
Map<String, String> data = new HashMap<String, String>();
data.put("borrower", "è¡æ¡åå¦");
return data;
}
}
3) æå¼contract.pdfï¼å¦å¾
è³æ¤ï¼å°±å®ç°äºæ ¹æ®PDF模æ¿çæPDFæ件ã
SpringMVCçè§å¾ä¸å·²æä¾äºå¯¹PDF模æ¿æ件çæ¯æï¼org.springframework.web.servlet.view.document.AbstractPdfStamperViewãé£ä¹åªéè¦é
置好æ¤è§å¾å°±å¯ä»¥äºãå
·ä½å为以ä¸æ¥éª¤ï¼
1) å®ç°æ½è±¡ç±» AbstractPdfStamperView
package personal.hutao.view;
import java.io.IOException;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.view.document.AbstractPdfStamperView;
import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.AcroFields;
import com.lowagie.text.pdf.PdfStamper;
public class PdfStamperView extends AbstractPdfStamperView {
public static final String DATA = "data";
public static final String FILENAME = "mergePdfFileName";
@SuppressWarnings("unchecked")
@Override
protected void mergePdfDocument(Map<String, Object> model,
PdfStamper stamper, HttpServletRequest request,
HttpServletResponse response) throws Exception {
response.setHeader("Content-Disposition", "attachment;filename=" + new String(model.get(FILENAME).toString().getBytes(), "ISO8859-1"));
AcroFields fields = stamper.getAcroFields();
fillData(fields, (Map<String, String>) model.get(DATA));
stamper.setFormFlattening(true);
}
private void fillData(AcroFields fields, Map<String, String> data)
throws IOException, DocumentException {
for (String key : data.keySet()) {
String value = data.get(key);
fields.setField(key, value);
}
}
}
2) å¨SpringMVCçé
ç½®æ件ä¸é
ç½®è§å¾
<!-- æç
§BeanName解æè§å¾ -->
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver">
<property name="order" value="1" />
</bean>
<!-- å®ä¹Pdf模çè§å¾ -->
<bean id="contract" class="personal.hutao.view.PdfStamperView">
<property name="url" value="/WEB-INF/template/template.pdf" />
</bean>
3) Controllerä¸çä¸å¡é»è¾å¤ç
package personal.hutao.controller;
import static personal.hutao.view.PdfStamperView.DATA;
import static personal.hutao.view.PdfStamperView.FILENAME;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.coamctech.sample.commons.controller.BaseController;
@RequestMapping("/contract")
@Controller
public class TestController {
@RequestMapping("/export/pdf")
public String exportPersonalCreaditLoanContract(Model model) {
model.addAttribute(DATA, data());
model.addAttribute(FILENAME, "XXX贷款åå");
return "contract";
}
private Map<String, String> data() {
Map<String, String> data = new HashMap<String, String>();
data.put("borrower", "è¡æ¡åå¦");
return data;
}
}
温馨提示:答案为网友推荐,仅供参考