起名生成 PDF 全攻略【1】初体验

   
 经历过小踩坑,翻看罢些微类似博客,下充斥过多少版本的Jar,才会找出不错的代码书写道,才能够促成项目经理需求分析题中之功能点。

转Windows 8.1已经昭示了季只多月份,之前为支付需要针对Windows
8.1新特色开展了零散之就学和采用,一直从未静下心来系统的求学了。近日机构来几曰新同事在,需要进行Windows
商店应用开发之树,所以借这个机遇,重新梳理一下Windows 8.1
应用开发之学识。闲言碎语不多云,接下去开始首先立,创建第一个使用。

     本文借一潮 JavaEE
生成PDF的震荡的贯彻过程,描述中公司程序员的不利成长之路。

率先我们看一下开销条件要求:Windows 8.1 + Visual Studio 2013

   
 俺上面才所以将成熟大商厦排除在他的原由是,大企业一般都发出成熟的产品线和技术积累。

接着我们新建一个Windows 8.1
商店应用的型,起名为HelloWorld(好吧,这说不定是故的极其多的名字了吧),来考察一下列的咬合

   
 至少会时有发生健全的建构师团队,有像扫地神僧那样的牛人隐士……

起名 1

   
 公司受到下等程序员遇到题目,能找到以前实现了之类似意义的代码作为参照,也能够咨询技术经理。

  • Properties目录中的AssemblyInfo.cs文件决定次集的健康信息,如程序集标题、描述、公司、版权和版本等;
  • 引用是豪门都好熟稔的一个目录,我们针对其他程序集的援都见面列在此地,我们可加上引用或去引用;
  • Assets目录存放的凡采取图标与启动屏幕相关的图样文件;
  • App.xaml包含了以所要的资源,App.xaml.cs为使提供输入;
  • HelloWorld_TemporaryKey.pfx是运用的数字证书文件;
  • MainPage.xaml是运启动后面世的首先单界面;
  • Package.appxmainfest是应用程序的清单文件,可以当文书中安以名称、图标、入口、功能等等。

   
 小店是没这种幸福的,就如昨天早上”生成PDF”需求及,工期一天,明日一旦于客户看。

搭下去我们详细说明一下清单文件:

     第一感应是摸索谷歌,关键字
“Java生成PDF”,博客不是相似的大都,下面简述几种实现方式及兑现过程遭到相见的问题。

起名 2

     (目录就排在方,通过搜索引擎进来的伴侣,看看上面列表中是否发会缓解你问题的,有硌至对应的小节,没有就关门看下一致漫漫搜索记录吧….)

  1. 应用程序

1.IText 生改为复杂PDF

   
谷歌中占据比重最老的Java
生成PDF实现类库,也是无数艺博客中关系到技术,官网:http://itextpdf.com/

   
开源中国遭到之牵线:http://www.oschina.net/p/itext,好了,既然都推荐那便使用即时仿佛库看看。

    下充斥 Jar
也是灿,让您挑花眼,从 2.1–5.5
应有尽有,有些论坛下载东西还待注册o(︶︿︶)o 唉。

   
这里以的凡行的本子
5.5,仔细看下别人的技能博客或者是官方文档,编码起来确实不是深费劲。笔者将事情抽象实现的类似如下:

public class createSimplePDF {
    private Font FontChinese;
    public void simplePDF() {
        try {
            BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
            FontChinese = new Font(bfChinese, 12, Font.NORMAL);
            Document document = new Document();
            PdfWriter.getInstance(document, new FileOutputStream("F:\\Garbage\\Hello simplePDF.pdf"));
            document.open();

            PdfPTable table = new PdfPTable(4);
            table.addCell(getCell("姓名", 1, 1));
            table.addCell(getCell("", 1, 1));
            table.addCell(getCell("编号", 1, 1));
            table.addCell(getCell("", 1, 1));

            table.addCell(getCell("部门", 1, 1));
            table.addCell(getCell("", 1, 1));
            table.addCell(getCell("岗位名称", 1, 1));
            table.addCell(getCell("", 1, 1));

            table.addCell(getCell("到职日期", 1, 1));
            table.addCell(getCell("", 1, 1));
            table.addCell(getCell("预定离职日期", 1, 1));
            table.addCell(getCell("", 1, 1));

            table.addCell(getCell("事由", 1, 3));
            table.addCell(getCell("", 3, 3));

            table.addCell(getCell("部门意见", 1, 3));
            table.addCell(getCell("", 3, 3));
            document.add(table);
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private PdfPCell getCell(String cellValue, int colspan, int rowSpan) {
        PdfPCell cell = new PdfPCell();
        try {
            cell = new PdfPCell(new Phrase(cellValue, FontChinese));
            cell.setRowspan(rowSpan);
            cell.setColspan(colspan);
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return cell;
    }
}

关键安装以之称呼、语言、支持旋转、支持的通告方式相当特性。其中和Windows
8 较生之异是得设置极端小增幅,Windows
8中处于Snapped状态的运用固定宽度为320px,而Windows 8.1
中用户可通过拖拽改变Snapped状态下的宽度,同时开发者可以安装极端小增幅为320px、500px
或 默认值。

2.IText添加对准汉语的支持

   愉快的用代码编写成功,生成后中文不见了,注意是少了,不是乱码。

 
 仔细观察报错,发现IText需要加上另外itext-asian.jar去支持中文,那就加加吧。

 
 因为自己IText使用的凡风靡的5.5本,导致其他小版本的 itext-asian.jar
无法支撑(具体原因是5.0上述的itext包名发生了变更),抛来之谬误如下:

   Font ‘STSong-Light’ with
‘UniGB-UCS2-H’ is not recognized

   最终以一如既往首博客中寻找得到解决方式,尝试后生效,就是上述代码中:

 BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
 FontChinese = new Font(bfChinese, 12, Font.NORMAL);

 
笔者这里以流行的IText.jar 和
配套的汉语支持  itext-asian.jar,放置百度云盘,节省其他同学找 Jar
时间。

 
云盘地址:http://pan.baidu.com/s/1bqs4km  提取密码: 99eg

 
最终落实的截图如下:

起名 3

 
其实项目蒙最终使促成的报表的楷模比是复杂的大多,80%消费时间重点是于调动体制,编译输出—>看样式,到这边其实需要已经能落实了。

 
笔者为是因此这种措施贯彻之,毕竟是被客户演示的。

 
这里要谢谢之是立即员博主的博客,里面来详尽的IText
设置段落,标题,表格,加密……….只要你能于生成PDF想到的,这其间基本上都有。

 
博客地址:http://rensanning.iteye.com/blog/1538689

起名 4

3.iTextRenderer(Flying Saucer) HTML转PDF

  Flying saucer
举行也HTML渲染PDF的开源项目(老外于名字我吧是醉了,想起一来是均等出,HTML
渲染 PDF起个”飞行器”)。

  其中的中心类 iTextRenderer
支持用HTML生成PDF。

  iTextRenderer 于负 iText
的基础及,单独实现了HTML渲染PDF,基本上会促成 CSS
2.1的整体性,并且完全符合 W3C 规范。

 
如果采取这种艺术,编译输出调整体什么的,就叫它们显现不善去吧。

  具体的流程如下图:

  起名 5

   
 这才是巨大上的解决方案有木有,模版引擎现在呢是玲琅满目(freemark,velocity…….),具体看你们项目吧。

   
 这样尽管绝不吧繁琐的样式发愁了,定义模版前端查看,注入数据,生成PDF,核心代码:

                ITextRenderer iTextRenderer = new ITextRenderer();
                iTextRenderer.getFontResolver().addFont("C:/Windows/Fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
                iTextRenderer.setDocument(new File(currWebcontentPath + reviewHtmlPath).toURI().toString());
                iTextRenderer.layout();
                String pdfName = getPdfName(testVO);
                OutputStream fileOutputStream = new FileOutputStream(currWebcontentPath + pdfPath + pdfName);
                iTextRenderer.createPDF(fileOutputStream);
                iTextRenderer.finishPDF();

   
这其间用解决的题目还有变化的HTML存放的职,然后就是是跨反到下载页面了,如果您是JavaEE后端开发,这些问题应有还不便休至你。

   
使用的iTextRenderer的jar同样也坐: http://pan.baidu.com/s/1kTOpM0R 
提取密码: y9y2

   
具体参考的博客有:

 
  http://www.tuicool.com/articles/qAFNFja

 
  http://downpour.iteye.com/blog/509417

   
http://my.oschina.net/u/603602/blog/268611?fromerr=bxBuHc6W

 2. 可见资产

重点安装使用的各种图标与启动屏幕,所用图都存放于前提到的Assets目录中,与Windows
8较为不同的凡足以装使用之默认大小,还得安装以的310 * 310徽标。

起名 6

  1. 功能

着重指定应用可下的体系功能,例如我们得取用户位置坐标,那我们需要勾选“位置”功能。

起名 7

  1. 声明

首要增长应用的可用声明,例如我们得贯彻搜索协议,就要添加“搜索”声明,然后填写有关属性。

起名 8

  1. 内容 URI

要增长可通往应用程序发送ScriptNotify事件的HTTPS URI。因为Windows 8.1
中不支持 WebView 控件的 AllowedScriptNotifyUris、AnyScriptNotifyUri 和
AllowedScriptNotifyUrisProperty。所以同意引发ScriptNotify事件的URI都用列在这边。

起名 9

  1. 打包

一言九鼎指定安装包的特性信息

起名 10

 

下一场我们针对MainPage做片改,尝试调试应用程序。我们以页面中在一个文本控件:

<Page
    x:Class="HelloWorld.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:HelloWorld"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <TextBlock Text="My First App, Hello World." HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="50"/>
    </Grid>
</Page>

连通下我们不怕得调剂应用了,在调试之前,我们事先来看看调试方法。Windows
商店应用的调剂方法有:模拟器、本地计算机 和
远程计算机。模拟器和本土电脑,顾名思义,就是于本机启动模拟器调试和当本机调试,而远程计算机多用来在连年至本机的平板上调节时。这里我们选择于模拟器调试,运行效果使下图:
起名 11

运行后,模拟器的下界面中显示出我们抬高的文本框。到这边我们的率先个利用之创及调节就形成了,谢谢。

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图