public void GenerateAllParts() {
Document document = new Document();
try {
PdfWriter.getInstance(document, new FileOutputStream("d:\\all.pdf"));
// 生成字體
BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", false);
// 標題字體
Font f30 = new Font(bfChinese, 30, Font.NORMAL, Color.BLACK);
// 正文字體
Font f12 = new Font(bfChinese, 12, Font.NORMAL, Color.BLACK);
Font f6 = new Font(bfChinese, 6, Font.NORMAL, Color.BLACK);
Font f8 = new Font(bfChinese, 8, Font.NORMAL, Color.BLACK);
document.open();
// 標題
document.add(new Paragraph("報表實例", f30));
// 換行
document.add(new Chunk("\n\n"));
//
document.add(
new Paragraph(
new Chunk(".......................點擊查看報表", f12)
.setLocalGoto("table")));
// 換行
document.add(new Chunk("\n\n"));
document.add(
new Paragraph(
new Chunk(".......................點擊查看圖片", f12)
.setLocalGoto("image")));
document.add(new Chunk("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"));
///////////////////////////////////////////////////
// 報表位置
document.add(new Chunk("報表實例", f12).setLocalDestination("table"));
// 添加table實例
PdfPTable table = new PdfPTable(5);
table.setWidthPercentage(100);
table.setHorizontalAlignment(PdfPTable.ALIGN_LEFT);
PdfPCell cell = new PdfPCell();
cell.setBackgroundColor(new Color(213, 141, 69));
cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
// 表格標題
cell.setPhrase(new Paragraph("標題一", f8));
table.addCell(cell);
cell.setPhrase(new Paragraph("標題二", f8));
table.addCell(cell);
cell.setPhrase(new Paragraph("標題三", f8));
table.addCell(cell);
cell.setPhrase(new Paragraph("標題四", f8));
table.addCell(cell);
cell.setPhrase(new Paragraph("標題五", f8));
table.addCell(cell);
// 表格數據
PdfPCell newcell = new PdfPCell();
newcell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
newcell.setPhrase(new Paragraph("數據一", f8));
table.addCell(newcell);
newcell.setPhrase(new Paragraph("數據二", f8));
table.addCell(newcell);
newcell.setPhrase(new Paragraph("數據三", f8));
table.addCell(newcell);
newcell.setPhrase(new Paragraph("數據四", f8));
table.addCell(newcell);
newcell.setPhrase(new Paragraph("數據五", f8));
table.addCell(newcell);
document.add(table);
////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
// 添加連接
document.add(new Chunk("圖片實例", f12).setLocalDestination("image"));
Image jpg = Image.getInstance("d:\\3.jpg");
document.add(jpg);
//////////////////////////////////////////////////////////
document.close();
} catch (Exception e) {
// TODO: handle exception
}
}
② java做 pdf轉換成圖片 時出現Unknown CMap: UniGB-UCS2-H急~
用jasperreport的exportpdffile那個方法生成pdf到指定的磁碟目錄下,所有的pdf文件生成是生成了,文件大小也不一.但是打開任何pdf文件都是空白的,不知道為什麼,而我換exporthtmlfile的那個方法生成的html文件都能展現正常.由於這個程序是在後台生成文件給mail發送的所以不通過jsp,action的流程,只能在後台指定目錄中生成一個pdf文件,然後用mail去調用的.所以不能用response流生成pdf文件.都是通過傳來的數據生成的pdf,我其他什麼都沒有改動,就只是用exportpdffile生成的pdf文件是空白的,但用exporthtmlfile的方法生成的能展現,說明數據源是沒問題的.不知道為什麼,困繞很久,由於需求只要求傳pdf文件,所以不能用html的文件來傳送,不知道是不是這兩個方法的參數設置有什麼不同嗎?而且pdf的那兩個itext中文包我也導入了,所以不存在字元轉換問題
③ java pdf轉圖片問題
搜索添加spire.pdf.jar文件為依賴,pdf轉圖片代碼如下:
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import com.spire.pdf.PdfDocument;
import javax.imageio.ImageIO;
public class toImage {
public static void main(String[] args) throws IOException {
//載入PDF文件
PdfDocument doc = new PdfDocument();
doc.loadFromFile("Sample.pdf");
//保存PDF的每一頁到圖片
BufferedImage image;
for (int i = 0; i < doc.getPages().getCount(); i++) {
image = doc.saveAsImage(i);
File file = new File( String.format("ToImage-img-%d.png", i));
ImageIO.write(image, "PNG", file);
}
doc.close();
}
}