在Java中轻松打印文档

java打印html 纯Java API实现HTML(HTML5)打印服务(事先设置好window默认打印机) 立即下载
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 有关在Java中实现文档打印的典型说法描述了一个复杂的过程,它要求对字体进行测定、对文本进行解析并将结果绘制到一个Graphics对象中。这个过程似乎执行起来相当困难,并且它和用于文档视频显示的高级编程方法不一致。如果你想要花费大量的精力来完成这个过程,那么你就不会首先想到要在Java中编程。 你一定不想自己完成测定、解析和绘制过程,而是希望通过简单地将文档发送到一个能为你处理所有事情的对象中来完成这个任务。本文就将介绍这样一个对象――DocumentRenderer,它将一个文档作为方法中的一个参数并处理指定任务来完成打印。比如,用这个类来显示一个HTML文档需要两个步骤:构造一个DocumentRenderer类的实例并将HTML文档作为参数发送到print(HTMLDocument)方法中。DocumentRenderer类用于处理打印该文档所必需的开销,包括显示一个打印对话框以及格式化文本。下载用于该类的源代码(DocumentRenderer.java)。 我们设计了这个DocumentRenderer类以便利用这个已经在Java中可用的高级文本性能。 根据可重用和可扩展类的原则,我们使用了一些现有的对象(Java Swing Text Package用它来对显示结果进行格式化)使打印结果能够显示在纸上。用这种方法设计DocumentRenderer使我们能够用比前面讨论过的方法少写近200行的代码来建立这个类。 除了能少写代码之外,使用DocumentRenderer 实现中的现有对象还提供了一些额外的功能使得该类更加通用。在最初设计这个类的时候,我们只是打算将HTML文档打印出来。而添加一些功能来打印其他类型的文档则是后来的想法。当我们发现只需在用于HTML 打印类的代码中加上约6行的额外代码就可以打印一个Rich Text Format文档时,便在这个项目的后期添加了这个功能。 显示文档 DocumentRenderer能够用来打印几类包含在JEditorPane中的文档。我们用三种类型的文档(JEditorPane能够缺省识别的)测试了这个printer类:HTMLDocuments、PlainDocuments和Rich Text Format文档。只需要做一些很小的改动,这个类就应该可以将包含在JEditorPane中的其他类型文档打印出来了。 DocumentRenderer类将一个文档的打印形式从其视频显示中区分出来了。这就使你能够针对特定的打印结果进行文本格式化,而会不影响其屏幕显示。DocumentRenderer采用所有打印页面的实际大小来显示文本并计算出行间距(line break)。当文档的宽度不足以显示在打印页面上时,该类会允许使用缩放(scaling)。 DocumentRenderer相当智能。分页符(page breaks)不会将一行单一语句分放到两个页面上。字符也不会被切成两半,不会象浏览器在处理一般打印时会在这一页末尾显示一句话的上半部分而在下一页的顶部显示这句话的下半部分。这个类能够处理大量字体、颜色和小图标。分栏文本(columnar text)的显示也没有问题。对于每一个JEditorPane能够显示的文本特性,通常DocumentRenderer都可以将这种性能呈现到纸上。 你只需使用两行代码便可以将DocumentRenderer结合到你的程序中去了。用一个不带参数的构造器创建这个类的实例,再调用一个合适的打印方法来处理其他事情。比如,以下代码将打印这个htmlDocument,它是HTMLDocument类的一个有效实例:DocumentRenderer DocumentRenderer = new DocumentRenderer(); DocumentRenderer.print(htmlDocument); 它给用户显示一个打印对话框,允许用户选择打印机、打印数量等,同时还有一个取消打印的选项。 PlainDocuments使用了print(PlainDocument)方法,采用和HTMLDocuments相同的方式执行打印。由于在Java中不能直接访问Rich Text Format文档,所以你必须将这种类型的文档发送到DocumentRenderer中(通过将它封装到一个JEditorPane里),就象这样:DocumentRenderer.print(jeditorPane); 这里的jeditorPane是JEditorPane的一个有效实例,其中包含一个Rich Text Format文档。 为了给用户提供方便,你可以调用DocumentRenderer的pageDialog方法来显示一个打印对话框以便用户可以调整页面大小、页边设置和纸的打印方向(orientation)。DocumentRenderer还提供了一种方法使开发人员可以选择是否对那些无法在打印宽度内完全显示的文档进行按比例缩放。我们认为能够进行缩放通常是比较好的选择,因为它能够防止文本在正确的页边处被分开,但它似乎比较适合让用户去选择。这种名为setScaleWidthToFit(boolean)的方法提供了按比例缩放的选项。你必须确定在调用打印方法之前调用这个scaling和pageDialog方法。 了解DocumentRenderer DocumentRenderer用于执行显示一个打印对话框并通过使用在Java Swing Printing API中可用的标准化工具开始打印操作。由于在使用这个DocumentRenderer类时无需完全了解这个API,而且该API已经在很多地方被详细描述过(见资源),因此这里我们就不再介绍它了。这个用于DocumentRenderer类的源代码中还包括了这个打印逻辑的完整文档。 然而我们或许应该解释一下DocumentRenderer用来在单独打印页面中定位文本的过程,以便你了解这个类所提供的改进功能,这会帮你回顾这个Java打印过程通常遵循的显示文档的逻辑。 文档通常是以一种简单的方式进行打印的。首先,文档会被放入JEditorPane。你可以将打印过程想象为在JEditorPane 的上面放置一个矩形框(其大小和页面打印区的大小相等),并对其中的内容进行打印而无需关心外面的部分。 这个矩形的上沿与JEditorPane 顶部齐平,矩形框内部的区域会被绘制(paint)。如果矩形的下沿穿过文本,不用去管它;字符会在打印页面的底部被分开。打印第二页时,矩形的上沿被向下移至前面被下沿所占据的那一行,该过程被重复执行。由于第二页正好在第一页结束的地方开始,因此在第一页底部被分开的字符会出现在第二页的顶部。后面几页也是一样。 为了避免从行中断开,DocumentRenderer会仔细检侧文档以测定是否一个单独文本和页面完整契合。这样会比只是在JEditorPane中放一个矩形框并打印其中内容的效果更佳。 绘制视图(View) 如果将JEditorPane看作仅包含了一个文档的方法,你就不能测定所有文本的位置或大小了。一个文档对于这个任务来说太大了,文档或许会契合于一个单一页面,或许不会。为了使文档能够完整契合于打印纸,你必须将它分成一些小的部分以便对每个部分的位置进行检测。 幸运的是,Java Swing Text Package提供了一个View类,它能使你将文档分成单一的、适于绘制的部分。你可以将JEditorPane想象成是由几个视图部分组成的;现在你就可以完全基于这些小部分的大小和位置来打印文档了。 View类的子类用于处理可视性组件(visual component)中的显示和打印文本的任务。然而,处理打印文本的许多程序员没有意识到的是视图可以在显示到纸上时提供这些相同的功能。尽管对视图问题进行详细讨论是本文以外的话题,但在讨论文档打印时对它有一个大致的了解还是很有必要的。 在Swing中,视图被当作处理文本显示的容器。在树型目录中一个根视图可以有多个视图分支。在这些分支的端部会显示代表真实文本的叶视图(leaf view)。 将这个视图的树型结构当作一个由单一的、大的、包含整个文本的视图来考虑。这个文档视图被分成几个段落视图,它被依次分成几个单独的行。尽管真实工作中的视图情况要比这个简单的描述复杂的多,但该例子中显示了如何通过视图来将一个文档分成契合于打印纸的小的部分。通过查看每一行,你可以测定它是否完全契合于打印纸而不会在底部被分开。如果行数契合,就执行打印,如果不契合,则将它记录下来以便在下一页中执行打印。 包含在JEditorPane中的视图采取了一种和在JPanel中的组件行为相类似的操作。一个主要区别在于视图不要求布局管理器(layout managers)来进行位置处理;它们会自己参与布局。这样一来,在JEditorPane中的视图就会象一个真实的组件和布局管理器一样进行操作。视图知道如何查看、如何绘制自己以及在哪里显示其子文档。 视图并不是被直接建立的。更确切地说,它们是由ViewFactory子类的工厂(factory)来生成的。一个ViewFactory生成一个文档并将它们分成根视图以及所需的分支视图和叶视图。工厂会按照这种方式来处理这些乏味的解析文档和计算布局的工作。 你很少能够直接和这些工厂打交道。对很多部分来说,它们是被自动调用的。在JEditorPane中设置文档并调用JEditorPane.validate()方法来将文档发送的适合的工厂中,该工厂则会返回所需的视图。然后这些视图会被用在组件的布局上。 打印视图 DocumentRenderer类能够将需要打印的文档放入jeditorPane中,它是JEditorPane的一个实例。jeditorPane的宽度决定了打印页面的大小而且它会调用一个验证方法来执行布局。DocumentRenderer不会显示这个JEditorPane,因此屏幕显示不会生效。需要被打印的根视图是通过一个有点复杂的jeditorPane用户界面调用来获得的:View rootView = jeditorPane.getUI().getRootView(jeditorPane); 这个rootView及其子视图可能会对所需信息进行查询以便对打印文档进行布局。这些视图在每部分文本的绘制环境(graphical context)中提供了坐标和大小。通过这些信息你就能够测定这部分文本是否和打印页面相契合。如果契合,则DocumentRenderer将执行打印;如果不契合,该类将对这个用来打印这部分文本而不将其分开的分页符进行测定。 由于视图知道如何自行绘制,因此你无需自己设置字体或颜色。DocumentRenderer以多种字体和颜色通过调用一个简单视图的paint方法来处理式样文本(styled text)。 然而这个视图的树型结构也存在一个问题。你不能确定在一个代表打印文本的叶视图结束之前分支视图从根视图中被分出了几次。你可以通过使用DocumentRenderer 类中的一个简单的循环方法来解决这个问题。 printView方法循环经过视图的分支结构来查找可打印的叶视图。这种方法将一个视图作为其中一个参数。它从根视图开始对每个视图进行检查以测定它是否有相关的子视图。如果有,则printView会依次调用每个子视图将其作为其视图参数。这样一来,这个方法最终会运行至整个树型结构。当该方法发现一个不带子视图的叶视图时,它会在用于打印的绘制环境中检测它的位置。这个方法只用于绘制那些完全契合于该环境的可打印部分的叶视图。当一个叶视图分跨(straddle)页面的底部时,这个方法就会记录该页面上沿的位置以便使下一页从这个位置开始。因此分页符就不会从文本的行当中断开了。 如果你想要更深入地了解打印视图的用法,你可以查找DocumentRenderer类的源代码。我们对它进行了注释讲解。由于它只有不到200行的代码,因此我们有充足的时间来给它加上注释。 该类的局限 我们在Java SDK 1.3和1.4版本中对DocumentRenderer进行过测试,尽管它应该是适用于实现Swing的所有Java版本的。DocumentRenderer是通过标准的Java技术来运行的,因此它不能实现比Java本身更好或更糟的文本绘制。在JEditorPane中不能显示的字符也将无法显示在纸上。 Java在Windows环境下对文本进行测定时有一个小问题。由于文本没有被精确地测定,一些位置可能有些偏离。由于这些错误很小所以通常不是什么大问题,但它会在对文本右对齐(right-justified )时变得很麻烦。因此,要尽量避免使用右对齐方式。DocumentRenderer类不会产生这个问题,它似乎也不会出现在Linux环境中。 最后要说的是,大图标是不能被打印出来的。在Java中不能将它们显示在页面中,但小图标是没有问题的。 在Java中执行打印不再会是一个复杂的问题了。只需简单地写两行代码并通过DocumentRenderer类来将高级的文本打印功能添加到你的程序中可以了。 关于作者: Kei G. Gauthier(CPA成员)是位于Mass州Springfield市American International College的一名会计学教授。Stephen E. Sugermeyer(CPA成员)是位于Mass州Springfield市Western New England College的一名会计学教授。
云模型在综合评价过程中的应用 目录 1 云模型标尺(标准云模型)的构建方法 1.1 通过正态云的“3En 规则”来表示评价论域 1.2 通过论域的边界值隶属度相等来表示评价论域 1.3 通过黄金分割法来表示评价论域 2 确定评价结果的过程 2.1 基本云发生器 2.2 X条件云发生器 2.3 两种方法的区别 综合评价问题一般分为以下六个步骤 1、明确评价目的; 2、确定被评价对象; 3、建立评价指标体系(包括收集评价指标的原始值、评价指标的若干预处理等); 4、确立与各项评价指标相对应的权重系数; 5、选.. 阅读详情

相关推荐

STM32F103C8T6+A4988驱动42步进电机全流程(附接线图+代码解析)

本文详细介绍了使用STM32F103C8T6单片机与A4988驱动模块控制42步进电机的完整流程。内容涵盖硬件接线图解析、电流设置、GPIO驱动代码编写以及细分控制等核心实践,旨在帮助嵌入式开发者和DIY爱好者快速实现精准运动控制,适用于3D打印机、CNC等需要精密定位的项目。

Python的专栏 795

java 打印 html,打印Java中的HTML文件

I'm trying to print an HTML file my program generates, but it won't work. On Ubuntu, ".isSupported(Desktop.Action.PRINT)" return false, even though I have the gnome libraries installed, and on Windows...

weixin_35368330的博客 1148

从 0 到 1,实战 Power BI 电商销售可视化看板全流程

本文详细介绍了从零开始使用Power BI构建电商销售可视化看板的全流程,涵盖数据准备、建模、可视化设计及高级功能应用。通过实战案例展示如何将复杂销售数据转化为直观图表,帮助电商从业者快速掌握销售趋势、热销产品和用户画像等关键信息,提升数据分析效率。

weixin_29061041的博客 486

Java:实现打印(附带源码)

Java:实现打印(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 2718

LM1875官方电路图元件作用解释说明以及电路调校

R1是为C1提供充放电回路用的电阻,这是老外工作严谨的地方,其实接好电位器之后直流通路就已经存在了,这个加上只能防止最恶劣情况时也能把C1的电能放掉,尽管只有一点点 C1是输入电容,主要作用是隔离前后级的直流信号,但是这个电容对音质的影响很大,可以换用不同的品牌和容量来部分修改音质和音色 R2提供LM1875正输入端的直流电平控制点,接地就表示在理想情况下Lm1875的输出直流电平是0V;还有一个作用就是确定放大器的交流输入阻抗为电阻值。 R3、R4是反馈电阻,这个电路的放大倍数为R4/R3+1=21倍。.

m0_50862404的博客 1万+

【BigWorld 游戏服务器引擎】Cell 架构设计介绍,及Java实现方案的探索

横向扩展(Scalability):通过动态增减CellApp和BaseApp的数量,可以轻松应对玩家人数的变化。世界可以做得非常大,只需增加更多的 Cell。负载分离(Load Separation):将不同性质的负载分离,避免了单一进程瓶颈。CPU 密集型的实时计算(CellApp)和 I/O 密集型的数据操作(BaseApp)互不影响。高效的视野管理(AOI):每个 Cell 只关心自己区域内和边界上的实体,大大降低了计算复杂度。容错性:某个CellApp。

代码时光 1207

html转换为pdf(打印)(Java版的Puppeteer爬虫框架的使用)

html转pdf,Java版的Puppeteer爬虫框架的使用,多个pdf合并为一个

myiwen_15213620430的博客 1999

INMP441麦克风避坑指南:为什么你的I2S录音总有杂音?(附示波器调试技巧)

本文针对INMP441麦克风与ESP32等MCU通过I2S接口连接时常见的录音杂音问题,提供了一套系统的硬件调试指南。文章深入剖析了电源纹波、信号完整性、接地环路及时钟抖动四大噪声根源,并详细讲解了如何使用示波器进行逐层排查,给出了增加LC滤波、串联阻尼电阻、优化布局布线等切实可行的解决方案,帮助开发者从根本上提升音频质量。

k0l1m2n3o的博客 1023

javafx+打印html文件,DOC-04-09 打印HTML内容

DOC-04-09 打印HTML内容本章教会你如何打印WebView组件中加载的Web页面。使用JavaFX8中提供的打印API,你可以打印JavaFX程序的图形化内容。在javafx.print包中有对应的类和枚举。9.1 使用打印API要想在JavaFX程序中启用打印功能,你需要使用PrinterJob类。该类表示与系统默认打印机相关联的一个打印任务。使用Printer类来控制一个打印机来执行...

weixin_39963440的博客 736

Oracle-OGG trail 文件大小引起的进程异常 OGG-01172

监控OGG目标端进程,其中一个进程异常,状态为 ABENDED,start repa 执行失败。进入OGG报告目录检查运行报告 2015-04-20 09:38:36 ERROR OGG-01172 Discard file (/ogg/oggrm/11.2/dirdat/repa.dsc) exceeded max bytes (2000000000). 总结处理方法,从根本上解决问题。

xdyzgjy的专栏 7957

Android性能优化之Android Profiler

在移动应用开发中,打造一个流畅、省电且不卡顿的用户体验是至关重要的。然而,随着应用功能的日益复杂,内存泄漏、CPU暴涨、网络卡顿以及电量消耗过快等问题常常化身为隐形杀手,悄悄吞噬着用户体验。为了帮助开发者精准定位并解决这些性能瓶颈,谷歌在Android Studio中集成了一款强大的一站式性能分析工具Android Profiler。Android Profiler作为Android Studio内置的实时数据可视化工具,支持运行在Android 5.0及更高版本的设备上。

xiangzhihong8的专栏 202

java 打印 html_java html生成PDF,并打印

importjava.io.File;importjava.io.FileOutputStream;importorg.zefer.pd4ml.PD4Constants;importorg.zefer.pd4ml.PD4ML;importorg.zefer.pd4ml.PD4PageMark;importjavax.print.Doc;importjavax.print.DocFlavor;imp...

weixin_42191480的博客 1274

机器学习之多种算法优缺点总结及优化方法

一、无监督算法: 1、聚类算法:Kmeans 2、关联规则算法:Apriori 二、有监督算法 1、分类算法 决策树(Decision Tree) 支持向量机(SVM) K近邻(kNN,k-NearestNeighbor) 朴素贝叶斯 逻辑回归 2、回归算法 线性回归 多项式回归 3、集成算法 a、bagging(Bootstrapped Aggregation) 随机森林 ...

平原的博客 7081

使用 Java 轻松搞定 Word 文档打印

在 Java 应用程序中实现 Word 文档的直接打印功能是许多企业级应用的需求。本文将详细介绍如何使用 Spire.Doc for Java 库结合 Java 标准库中的 java.awt.print 包,实现从加载 Word 文档到指定打印机打印的完整解决方案。

asdzx67的博客 405

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java pdf打印_Java 打印PDF文档

本文将介绍如何在Java应用程序中打印PDF文档。一般有以下三种常见打印方式:静默打印显示打印对话框打印打印PDF时自定义纸张大小使用工具:Free Spire.PDF for Java创建运行环境:方式 1:通过官网下载组件,解压后将lib文件夹下的Spire.Pdf.jar手动导入IDEA中。具体步骤可参考下图。方式 2:通过Maven仓库安装产品及导入相关依赖包。在pom.xml文件中配置M...

weixin_30324561的博客 220

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

用 Java 轻松读取 Word 文档内容

嘿,朋友们!在 Java 开发里,有时候咱得读取 Word 文档里的内容,这在处理合同、报告等文件时特别有用。咱可以根据 Word 文档的格式,用不同的库来实现读取功能。下面就详细说说.doc和.docx这两种常见格式文档的读取方法。

十年磨一剑,java开发各种业务系统 5046

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

***使用pdfbox打印pdf***

直接贴代码 public static void printPdf() throws Exception { //获取pdf文档流 InputStream in = new FileInputStream("d:\\pdfTest.pdf"); //将pdf加载为PDDocument对象 PDDocument document = PDDocument.load(in); ...

shengyongchen的博客 1406

java打印Excel

首先先下载jcom.jar和jcom.dll文件,把dll文件放在jdk的bin目录下,然后把jar引入到classpath中,就可以了,程序如下所示:package com.gyhq.soft;  /**  * 引入JCom操作Excel的jar  */  import jp.ne.so_net.ga2.no_ji.jcom.ReleaseManager;    import jp.n

lingjiuhun的专栏 882

java打印

最近在弄发传真的,一直在研究怎么把word文档、pdf文件等等转换为tiff文件。因为虚拟打印机可以设置为打印到tiff文件,所以主要难在不知道如何打印这些格式的文件,走了很多弯路:word文档用了jcob来调用MS Office,也研究过永中Office,甚至PWS的个人版,但都觉得调用麻烦;pdf用dos命令来实现静默打印,但考虑到要部署在linux环境,也不爽啊。今天有点空,又继续找,找啊找...

Liuwenhao866595的专栏 170

纯Java文档阅读器

XDocViewer是一个纯Java的文档阅读器组件,可以方便的集成到Java应用中(也可以集成到Web应用中),它有如下特点: 1、免费 2、支持的文档格式丰富:MS Office文档(doc、docx、ppt、pptx、xls、xlsx)、pdf、epub、html、rtf、txt、csv等格式。 3、包依赖少,只有一个包是必须的 4、嵌入简单,它只是一个JComponent 5、A

zxingchao2009的专栏------用博客记录技术成长的点点滴滴 1610

java加密保护text_java使用itext为pdf文件设置密码保护

我们可以使用itext的PdfWriter类的setEncryption方法来为pdf文件设置密码package com.open.pdf;import java.io.File;import java.io.FileOutputStream;import java.io.OutputStream;import java.util.Date;import com.itextpdf.text.Doc...

weixin_42357719的博客 390

java程序调试密码文件_java使用itext为pdf文件设置密码保护详解

我们可以使用itext的PdfWriter类的setEncryption方法来为pdf文件设置密码package com.open.pdf;import java.io.File;import java.io.FileOutputStream;import java.io.OutputStream;import java.util.Date;import com.itextpdf.text.Doc...

weixin_34765290的博客 337

wkhtmltopdf+itext实现html生成pdf文件的打印下载(适用于linux及windows)

目中遇到个根据html转Java的功能,在java中我们itext可以快速的实现pdf打印下载的功能,在itext中我们一般有以下三中方式实现 配置pdf模板,通过Adobe Acrobat 来设置域最后通过代码将数据填充进去 通过FreeMarker或thymeleaf配置html模板填充数据 Jsoup+XMLWorkerHelper 对于上述...

weixin_34194551的博客 557

Spire.Doc for Java Version:12.9

Spire.Doc for Java是一个专业的 Word API,它使 Java 应用程序能够创建、转换、处理和打印 Word文档,而无需依赖 Microsoft Word。

控件与插件之大全 793

Big Faceless Java PDF Library[BFO]

Big Faceless Organization (BFO)是KSM有限公司的贸易名称,是一家英国的私营公司。我们为国际性的企业对企业的电子商务市场开发高质量的Java软件组件。BFO成立于1998年,并且它拥来自世界各地50多个国家的客户,包括波音公司、毕马威国际会计公司、丰田、西门子公司和美国哈佛大学。 Big Faceless Java PDF 库 Ω578867473告诉您这用于创建、编辑、显示和打印 Acrobat PDF 文档的最智能 PDF 库。PDF API 体积小、速度快、易于使用

控件与插件之大全 412

使用PDFRenderer将PDF转化为图片

<br />这几天遇到一个问题,就是要将PDF文档中的内容全部转化为图片。我在网上找了很多资料,发先有好多这的实现方式,我也对这些资料做了一些整理。我这里就介绍一个自认为还不错的实现方式,使用java实现的。1)下载一个 PDFRenderer.jar的包       URL: https://pdf-renderer.dev.java.net/2)在这个官网上还有几个sample ,大家可以看一下 :https://pdf-renderer.dev.java.net/examples.html3)下面一段

ooflywing的专栏 1万+
上一篇: Sun公司全面解决方案(西部)大会
下一篇: PETSTORE 原始碼追蹤記(2)-Model 篇
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值