일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- v8 engine xcode build
- Google V8 Engine
- Android NDK시스템
- IOS10
- so file
- apns
- 인증서 정보 뽑아내기
- ios framework
- java
- FlexiblePageView
- 공인인증서 정보
- Android
- ios
- Status Bar
- apk 다운사이징
- JavaScript Engine
- apache
- appbarlayout
- IMAGE
- Push
- sha1 convert hashkey
- SO 파일
- embedd
- 안드로이드
- Objective C
- PageControl
- Magnify Anim
- 공인인증서 만료일
- android log dump
- V8 Engine
- Today
- Total
caTea 블로그
html convert pdf (html문서를 pdf 파일로 변환) 본문
필요 라이브러리
-------------------
-------------------
소스
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.UUID;
import org.w3c.tidy.Tidy;
import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;
import com.lowagie.text.pdf.BaseFont;
public class PdfConverter {
public static void main(String[] args) {
// TODO Auto-generated method stub
//Check to make sure everything is as it should be
if (args.length < 2) {
//throw new Exception("Invalid arguments. Renderer requires a path to an HTML File (source) and a path to a PDF File (destination).");
}
try {
//URL.setURLStreamHandlerFactory(new DataURLStreamHandlerFactory());
} catch (Error e) {
System.out.println("The Stream Handler Factory is already defined. Moving on to convert to PDF.");
}
try {
//Set up command line arguments
String inputEncoding = "UTF-8";
String outputEncoding = "UTF-8";
String inputFile = "/html경로/test.html";
String pdfFilePath = "/만들어질 pdf 경로/test4.pdf";
String fontPath = "/폰트경로/NanumGothic-Bold.ttf"; //중요하다 한글로 표현할려고하면 폰트지정은 필수다
//Set up input file and output file for cleaning up the HTML
InputStream is = new FileInputStream(inputFile);
UUID uniqueID = UUID.randomUUID();
String cleanHTMLFile = uniqueID.toString() + ".html";
OutputStream os = new FileOutputStream(cleanHTMLFile);
//Clean the HTML
//This is necessary because for flyingsaucer to render the PDF, it
//requires well-formatted XHTML or XML (XHTML in our case)
Tidy htmlCleaner = new Tidy();
if (!inputEncoding.isEmpty())
htmlCleaner.setInputEncoding(inputEncoding);
if (!outputEncoding.isEmpty())
htmlCleaner.setOutputEncoding(outputEncoding);
htmlCleaner.setXHTML(true);
htmlCleaner.parse(is, os);
//Setup the inputs and outputs for the PDF rendering
String url;
url = new File(cleanHTMLFile).toURI().toURL().toString();
OutputStream outputPDF = new FileOutputStream(pdfFilePath);
//Create the renderer and point it to the XHTML document
ITextRenderer renderer = new ITextRenderer();
ITextFontResolver ifr = renderer.getFontResolver(); // 한글로 나오게 할려면 필요하다
ifr.addFont(fontPath, BaseFont.IDENTITY_H, true);
renderer.setDocument(url);
//Render the PDF document
renderer.layout();
renderer.createPDF(outputPDF);
//Close the streams (and don't cross them!)
os.close();
outputPDF.close();
//Clean up the temp file
File tempFile = new File(uniqueID.toString() + ".html");
tempFile.delete();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
----------------------------------------------------------------------
html 소스
<!DOCTYPE html>
<html>
<head>
<title>PDF TEST</title>
</head>
<body style="font-family: NanumGothic;"> 이부분을 설정해줘야 한글로 나온다
<h2>test</h2>
<h2>테스트</h2>
</body>
</html>
-------------------------------------------------------------------------------
잡담
iText 라는 라이브러리가 있어서 써보았지만 라이센스 문제로 인해 쓸수가없었다...
이 라이브러리는 라이센스가 MIT라서 맘대로 사용가능하다(내부적으론 IText를 사용하지만.... 상관없겠지..)
하지만 버전이 낮아 지원되는 기능은 적지만
간단한 변환은 정말 좋은거같다 끗
etc. 한글 나오게 할려고 개고생했다 ㅅㅂ
'spring(java)' 카테고리의 다른 글
fcm server side code spring java (2) | 2016.12.12 |
---|---|
바코드 생성 (0) | 2016.05.17 |
http 데이터 송수신 클라이언트단 (0) | 2016.01.29 |
java mail sand example (0) | 2015.09.10 |
java excel paser example (0) | 2015.09.10 |