javaはpdfサムネイルを生成します.
3556 ワード
プロジェクトではPDFのサムネイルを使用して、javaのいくつかのオープンソースプロジェクトを使用して、pdfを画像に変換します.
記事を参照しましたhttp://javasogo.iteye.com/blog/1169234
これらのオープンソースプロジェクトのPDFRender、pdfbox、jpedalのやり方を比較します.
1.PDFRender:確かに一番効率がいいですが、字体のサポートが足りないとほとんどの中国語のpdfに対応できないです.
2.pdfbox:フォントは基本的に変換できますが、メモリオーバーしやすいです.(何十Mファイルを作ったらだめです.)
3.jpedal:効率がいいです.でも、ここのいくつかの中国語のpdfファイルはサムネイルを生成しています.プロジェクトチームにもバグを提出しました.
仕方がないです.今フォントが解決できない状況に遭遇しました.ICEPDFを探しました.このプロジェクトもビジネスとオープンソースがあります.私はオープンソースのICEPDF-42.2(最新の4.3があります)を使って、jpedalのフォントサポートライブラリを使って、確かに私の手の中国語のpdfを支持することができます.しかも効率がいいです.使用しやすいです.ここにコードをここに貼り付けます.
記事を参照しましたhttp://javasogo.iteye.com/blog/1169234
これらのオープンソースプロジェクトのPDFRender、pdfbox、jpedalのやり方を比較します.
1.PDFRender:確かに一番効率がいいですが、字体のサポートが足りないとほとんどの中国語のpdfに対応できないです.
2.pdfbox:フォントは基本的に変換できますが、メモリオーバーしやすいです.(何十Mファイルを作ったらだめです.)
3.jpedal:効率がいいです.でも、ここのいくつかの中国語のpdfファイルはサムネイルを生成しています.プロジェクトチームにもバグを提出しました.
仕方がないです.今フォントが解決できない状況に遭遇しました.ICEPDFを探しました.このプロジェクトもビジネスとオープンソースがあります.私はオープンソースのICEPDF-42.2(最新の4.3があります)を使って、jpedalのフォントサポートライブラリを使って、確かに私の手の中国語のpdfを支持することができます.しかも効率がいいです.使用しやすいです.ここにコードをここに貼り付けます.
01
public
static
final
String FILETYPE_JPG =
"jpg"
;
02
public
static
final
String SUFF_IMAGE =
"."
+ FILETYPE_JPG;
03
04
/**
05
* pdf
06
*@param filepath , d:/test.pdf
07
*@param imagepath , d:/test-1.jpg
08
*@param zoom ,1 ,0.3 30%
09
*/
10
public
static
void
tranfer(String filepath, String imagepath,
float
zoom)
11
throws
PDFException, PDFSecurityException, IOException {
12
// ICEpdf document class
13
Document document =
null
・;
14
15
float
rotation = 0f;
16
17
document =
new
Document();
18
document.setFile(filepath);
19
// maxPages = document.getPageTree().getNumberOfPages();
20
21
BufferedImage img = (BufferedImage) document.getPageImage(
0
・,
22
GraphicsRenderingHints.SCREEN, Page.BOUNDARY_CROPBOX, rotation,
23
zoom);
24
25
Iterator iter = ImageIO.getImageWritersBySuffix(FILETYPE_JPG);
26
ImageWriter writer = (ImageWriter) iter.next();
27
File outFile =
new
File(imagepath);
28
FileOutputStream out =
new
FileOutputStream(outFile);
29
ImageOutputStream outImage = ImageIO.createImageOutputStream(out);
30
writer.setOutput(outImage);
31
writer.write(
new
IIOImage(img,
null
,
null
・));
32
}