自己动手写优快云博客提取器源码分析之二:处理网页保存为doc文件

本文介绍了一个简单的Java程序,该程序使用itext包将抓取到的网页内容转换并保存为DOC文件。文中提供了完整的源代码示例,展示了如何设置文档格式、添加页眉及正文内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自: http://blog.youkuaiyun.com/w397090770/article/details/7768089

 

下面是把抓取到的网页用itext包保存为doc文件,过程很简单的。下面是这个类的实现:

  1. /** 
  2.  *  
  3.  */  
  4. package com.wyp.html2doc;  
  5.   
  6. import java.io.File;  
  7. import java.io.FileOutputStream;  
  8. import java.io.StringReader;  
  9. import java.util.List;  
  10.   
  11. import com.lowagie.text.Document;  
  12. import com.lowagie.text.Element;  
  13. import com.lowagie.text.HeaderFooter;  
  14. import com.lowagie.text.PageSize;  
  15. import com.lowagie.text.Paragraph;  
  16. import com.lowagie.text.Phrase;  
  17. import com.lowagie.text.Rectangle;  
  18. import com.lowagie.text.html.simpleparser.HTMLWorker;  
  19. import com.lowagie.text.html.simpleparser.StyleSheet;  
  20. import com.lowagie.text.rtf.RtfWriter2;  
  21.   
  22. /** 
  23.  * @author w397090770 
  24.  * Create Data: 2012-7-18 
  25.  * Email: wyphao.2007@163.com 
  26.  *  
  27.  * 版权所有,翻版不究,但是在修改本程序的时候务必加上这些注释。谢谢 
  28.  * 仅用于学习交流之用 
  29.  */  
  30. public class saveAsDOC {  
  31.     @SuppressWarnings("unchecked")  
  32.     public  void getDoc(File file, String contents, String title) throws Exception {  
  33.         //file是保存文件的文件夹路径,contests是前面处理好的网页源码,title是帖子的标题,用于标记生成的文件名          
  34.         File saveFileName = new File(file.getAbsoluteFile() + File.separator + title + ".doc");  
  35.         if(!saveFileName.exists()){  
  36.             saveFileName.createNewFile();  
  37.         }else{      //和以前处理txt文件一样,如果先前这个文件已经存在,我们就不打算再去生成doc文件了,直接返回  
  38.             return;  
  39.         }  
  40.         // 设置纸张大小  
  41.         Document document = new Document(PageSize.A4);  
  42.         // 建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中  
  43.         RtfWriter2.getInstance(document,new FileOutputStream(saveFileName));  
  44.         document.open();  
  45.         // 设置中文字体  
  46.         //BaseFont bfChinese = BaseFont.createFont("STSongStd-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);  
  47.         // 正文字体风格  
  48.         //Font contextFont = new Font(bfChinese, 12, Font.NORMAL);  
  49.           
  50.         // 添加页眉  
  51.         HeaderFooter header = new HeaderFooter(new Phrase(title), false);  
  52.         header.setAlignment(Rectangle.ALIGN_CENTER);  
  53.         document.setHeader(header);  
  54.         // 添加页脚  
  55.         /*HeaderFooter footer = new HeaderFooter(new Phrase(), false); 
  56.         footer.setAlignment(Rectangle.ALIGN_CENTER); 
  57.         document.setFooter(footer);*/  
  58.           
  59.           
  60.         Paragraph paragraph = new Paragraph();  
  61.         paragraph.setAlignment(Element.ALIGN_LEFT);  
  62.         paragraph.setFirstLineIndent(20);  
  63.   
  64.         StyleSheet ss = new StyleSheet();  
  65.         // 添加网页里面的东西  
  66.         List<Element>htmlList = HTMLWorker.parseToList(new StringReader(contents),ss);  
  67.         for (int i = 0; i < htmlList.size(); i++) {  
  68.             Element e = htmlList.get(i);  
  69.             paragraph.add(e);  
  70.         }  
  71.   
  72.         document.add(paragraph);  
  73.         document.close();  
  74.     }  
  75. }  


 

代码很简单吧。
资源下载链接为: https://pan.quark.cn/s/3d8e22c21839 随着 Web UI 框架(如 EasyUI、JqueryUI、Ext、DWZ 等)的不断发展与成熟,系统界面的统一化设计逐渐成为可能,同时代码生成器也能够生成符合统一规范的界面。在这种背景下,“代码生成 + 手工合并”的半智能开发模式正逐渐成为新的开发趋势。通过代码生成器,单表数据模型以及一对多数据模型的增删改查功能可以被直接生成并投入使用,这能够有效节省大约 80% 的开发工作量,从而显著提升开发效率。 JEECG(J2EE Code Generation)是一款基于代码生成器的智能开发平台。它引领了一种全新的开发模式,即从在线编码(Online Coding)到代码生成器生成代码,再到手工合并(Merge)的智能开发流程。该平台能够帮助开发者解决 Java 项目中大约 90% 的重复性工作,让开发者可以将更多的精力集中在业务逻辑的实现上。它不仅能够快速提高开发效率,帮助公司节省大量的人力成本,同时也保持了开发的灵活性。 JEECG 的核心宗旨是:对于简单的功能,可以通过在线编码配置来实现;对于复杂的功能,则利用代码生成器生成代码后,再进行手工合并;对于复杂的流程业务,采用表单自定义的方式进行处理,而业务流程则通过工作流来实现,并且可以扩展出任务接口,供开发者编具体的业务逻辑。通过这种方式,JEECG 实现了流程任务节点和任务接口的灵活配置,既保证了开发的高效性,又兼顾了项目的灵活性和可扩展性。
为了提高你对心电信号特征提取及功率谱分析的能力,我推荐你参考《Matlab心电信号特征提取及分析处理教程》。本书将为你提供详尽的Matlab源码,使你能够直接在Matlab 2019b环境中运行,并进行相应的模拟分析。 参考资源链接:[Matlab心电信号特征提取及分析处理教程](https://wenku.csdn.net/doc/82oedb3b5c?spm=1055.2569.3001.10343) 首先,你需要设置Matlab的运行环境为2019b版本,并将提供的源码文件放置在统一的工作目录下。在该目录中,存在一个名为main.m的主函数文件,这是你开始实验的关键。通过双击运行main.m文件,Matlab将执行其中的代码,对心电信号数据进行处理。 在特征提取方面,常用的方法包括但不限于波形检测、R波峰值检测、QRS复合波检测等。例如,可以使用Pan-Tompkins算法来检测ECG信号中的R波峰值,进而得到一系列时间点,这些时间点的间隔可用于计算心率。而功率谱密度分析则通常采用快速傅里叶变换(FFT)来实现。以下是一段简化的Matlab代码示例,用于实现上述两个步骤: ```matlab % 假设ecgSignal为已加载的心电信号数据 [Peaks, locs] = findpeaks(ecgSignal, 'MinPeakHeight', 0.5*max(ecgSignal)); % R波峰值检测 % 这里的0.5*max(ecgSignal)是阈值参数,可根据实际信号调整 % 计算心率 heartRate = 60 / mean(diff(locs)); % 单位为次/分钟 % 功率谱密度估计 Fs = 1000; % 假设采样频率为1000Hz [Pxx, f] = pwelch(ecgSignal, [], [], [], Fs); % 绘制功率谱密度图 plot(f, 10*log10(Pxx)) xlabel('Frequency (Hz)') ylabel('Power/Frequency (dB/Hz)') title('Power Spectral Density of ECG Signal') ``` 在这段代码中,`findpeaks`函数用于检测信号中的峰值,其中`MinPeakHeight`参数用于确定最小的峰值高度,以排除噪声干扰。`pwelch`函数用于估计信号的功率谱密度,其中`Fs`是采样频率,`Pxx`是功率谱密度,`f`是对应的频率。 为了更深入理解心电信号处理的全过程,你可以参考《Matlab心电信号特征提取及分析处理教程》中关于心电信号处理的详细步骤和附加的源码文件。这些文件将帮助你理解决策过程中的关键部分,包括数据预处理、特征提取、分类器训练等。此外,书中还包含了故障诊断分析,以识别ECG信号中的异常模式。在你完成基础操作后,我鼓励你继续深入学习雷达通信、生物电信号处理、通信系统处理等高级主题,这些知识将极大地拓宽你的专业视野。 参考资源链接:[Matlab心电信号特征提取及分析处理教程](https://wenku.csdn.net/doc/82oedb3b5c?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值