精华内容
下载资源
问答
  • pdf文件动态签章以及生成动态信息 步骤1.conversionItextPdf(将pdf转换成编码软件为Itext的pdf) 代码如下 public void conversionItextPdf() throws Exception { String newfile = "D:\\Users\\v_songfeng\\...

    pdf文件动态签章以及生成动态信息

    步骤1.conversionItextPdf(将pdf转换成编码软件为Itext的pdf)
    代码如下

    public void conversionItextPdf() throws Exception {
            String newfile = "D:\\生成编码软件为Itext格式的PDF.pdf";
            String[] files = {"D:\\其他编码软件类型的PDF.pdf", ""};
            Document document = new Document(new PdfReader(files[0]).getPageSize(1));
            try {
                document = new Document(new PdfReader(files[0]).getPageSize(1));
                PdfCopy copy = new PdfCopy(document, new FileOutputStream(newfile));
                document.open();
                for (int i = 0; i < files.length; i++) {
                    PdfReader reader = new PdfReader(files[i]);
                    int n = reader.getNumberOfPages();
                    for (int j = 1; j <= n; j++) {
                        document.newPage();
                        PdfImportedPage page = copy.getImportedPage(reader, j);
                        copy.addPage(page);
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                document.close();
            }
        }
    

    步骤2.用adobe软件为pdf添加表单域

    在这里插入图片描述
    在这里插入图片描述
    步骤3.java代码给表单域赋值

    public Map<String, String> convertMap(MakeLoanRequest request) throws Exception {
            Map<String, String> map = new HashMap<>();
            map.putAll(getDate());
            map.put("name", "张三");
            map.put("idCardNum", "320345199020562356");
            return map;
        }
    
    public InputStream generationContract(String templatePath, Map<String, String> map) {
            try {
                PdfReader reader = new PdfReader(templatePath);// 读取pdf模板
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                PdfStamper stamper = new PdfStamper(reader, bos);
                // 输出流
                AcroFields form = stamper.getAcroFields();
                Map<String, AcroFields.Item> fieldMap = form.getFields();
                for (Map.Entry<String, AcroFields.Item> entry : fieldMap.entrySet()) {
                    String name = entry.getKey();
                    form.setField(name, map.get(name));
                }
                //如果为false那么生成的PDF文件还能编辑,一定要设为true
                stamper.setFormFlattening(true);
                stamper.close();
                return byte2Input(bos.toByteArray());
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    

    1.此处是将pdf赋值后以输入流的形式返回,可根据自己需要做修改
    2.步骤1中,将pdf设置成编码软件为Itext的格式,标红的PdfStamper PdfStamper(import com.itextpdf.text.pdf.PdfReader;import com.itextpdf.text.pdf.PdfStamper;)才能读取到pdf中的表单域

    如果有遇到不理解的,可加QQ:467387096 一起讨论

    展开全文
  • 是可忍熟不可忍。。。盘它! 所需工具 1、截图工具:SnagIt10 2、自动执行工具:按键精灵(官网下载) 3、图片合成PDF工具(这个太多了,Adobe Acrobat DC、万彩办公大师等等都可以) 以上截图工具和按键精灵打包...

    首先感谢作者mainIdear的博文《当当·亚马逊·京东等加密的电子书转为PDF》为我搞定加密电子书转PDF提供帮助。

    我准备搞的电子书就是下图这个,文字不能复制,也无法打印,无下一页按钮。更为可恶的是,这个加密电子书必需插着大块头加密电路板才能打开。是可忍熟不可忍。。。盘它!
    在这里插入图片描述

    所需工具

    • 1、截图工具:Snagit10
    • 2、自动执行工具:按键精灵官网下载
    • 3、图片合成PDF工具(这个太多了,Adobe Acrobat
      DC、万彩办公大师等等都可以)

    以上截图工具和按键精灵打包下载地址:直达CSDN下载

    软件安装

    原mainIdear博文中的通用按键精灵,网上能找到的都带有病毒。本博文中的按键精灵从它官网下载,实测安全放心。

    先安装好Snagit10和按键精灵。安装过程不重要,一路默认即可。不过,按键精灵有小广告按钮,安装的时候要注意看,注意取消勾选。如果只是暂时使用,SnagIt10直接试用就可以了。

    配置

    (一)打开准备搞它的电子书,获取推进方式

    在这一步,是为了能够在批量自动截图时,电子书软件能够不断地翻页。方式不限。

    对于我所面对的这个加密电子书,在它的工具栏真是干干净净啥都不给我设置。跳转的话可以跳转,但是那样就比较麻烦了。最好能够找到“下一页”的快捷按钮。我将输入法切换至英文状态,从键盘的26个英文字母挨个试了一遍,最后找到“N”就是它的"下一页"快捷键。有这个东西,真是成功了一半。

    如果没有“下一页”的快捷键,那也可以尝试其他方式,只不过后面在使用按键精灵时更为复杂而已,这需要你自己去摸索。

    (二)打开Snagit10,进行配置

    1. 打开Snagit10,然后选择方案里面的【多合一】,再到下方的方案设置,在“输入”那里点击三角符号-切换为高级-固定范围。

    在这里插入图片描述

    1. 点击【输出】旁的小三角,选择【文件】,再重复打开小三角,取消勾选【在编辑器中预览】(很重要),再打开【属性】设置。在【输出属性】设置里面选择输出文件格式JPG,【自动命名】和文件夹保存地方(最好保存到一个新文件夹),单击确定保存。

    在这里插入图片描述

    (三)打开按键精灵,进行配置

    1. 打开按键精灵,新建空白脚本
    2. 首先在控制命令里的“准备循环执行xxx遍”这里改成电子书的页数,然后点击插入。
      在这里插入图片描述
    3. 然后将脚本当前行移至循环和结束之间,在键盘命令里的按键里按下M(即自动截图热键),并点击插入。
      在这里插入图片描述
    4. 在其他命令里插入延时1秒。重复上边操作,再插入键盘命令N(即电子书“下一页”热键)以及另外一个延时1S,得到如下脚本:
      在这里插入图片描述
    5. 点击保存,切换至调试界面,可以最小化按键精灵了,它的脚本启动热键为F10。

    (四)电脑纵屏

    为了能够获得更高分辨率的图片,在这里将电脑屏幕换个方向。在Windows的设置里,将屏幕设置为纵向:
    在这里插入图片描述
    点击保存更改即可。

    (五)重新打开Snagit10进行配置

    1. 重新切换至Snagit10,点击方案设置-固定范围旁边的小三角形,点击属性。

    2. 点击选择区域,然后对着电子书准备批量截图的区域直接框选即可。它会自动得出宽度、高度以及启始点,点击应用和确定。在这里插入图片描述

    3. 打开【工具】菜单,选择【程序参数设置】。设置【全局捕获】热键,我这里设置的是M,单击确定保存。然后在软件界面就可以看到热键变为M。
      在这里插入图片描述

    4. 将Snagit10最小化

    开搞

    将Snagit10和按键精灵都最小化之后,打开加密的电子书,切换至第一页。按下F10,现在脚本就会自动地完成截图-下一页-截图-下一页。。。
    在这里插入图片描述
    最后,执行完毕就可以得到若干张各页的图片了:
    在这里插入图片描述
    此时,你再用图片批量合成PDF软件把图片合并成PDF即可。
    在这里插入图片描述
    如果觉得PDF无法复制文字,可以在Acrobat DC里使用增强扫描,把文本和图片识别出来,然后就可以复制文字了。

    至此,加密电子书批量截图成PDF的工作就大功告成了,希望对你有帮助。

    展开全文
  • 利用itext工具编辑生成pdf

    千次阅读 2017-03-14 12:13:40
    4、选择刚刚生成pdf 5、打开后它会自动侦测并命名表单域,右键表单域,点击属性,出现文本域属性对话框,(如果没有自动表单域选择工具栏中的添加文本域重新添加)我在使用过程中发现默认的表单域并能让文字...

    1.先用word做出界面

    2、把word文档转换成pdf输出

    3.用Adobe Acrobat 打开你刚刚用word转换成的pdf,选择“创建PDF表单”


    4、选择刚刚生成的pdf


    5、打开后它会自动侦测并命名表单域,右键表单域,点击属性,出现文本域属性对话框,(如果没有自动表单域选择工具栏中的添加文本域重新添加)我在使用过程中发现默认的表单域并不能让文字显示,必须手动重新添加文本域,名称可以重新命名


    6、修改所有的文本域完成后 保存pdf。接下来就是撸代码了

    我用到的jar包有三个如下

    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itextpdf</artifactId>
        <version>5.5.8</version>
    </dependency>
    <dependency>
        <groupId>com.itextpdf.tool</groupId>
        <artifactId>xmlworker</artifactId>
        <version>5.5.8</version>
    </dependency>
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itext-asian</artifactId>
        <version>5.2.0</version>
    </dependency>
    java代码如下
    //利用模板生成pdf
        public void fillTemplate(){
            //模板路径
            String templatePath = "../template_demo.pdf";
            //生成的新文件路径
            String newPDFPath = "../newPdf.pdf";
            PdfReader reader;
            FileOutputStream out;
            ByteArrayOutputStream bos;
            PdfStamper stamper;
            try {
                out = new FileOutputStream(newPDFPath);//输出流
                reader = new PdfReader(templatePath);//读取pdf模板
                bos = new ByteArrayOutputStream();
                stamper = new PdfStamper(reader, bos);
                AcroFields form = stamper.getAcroFields();
    
                String[] str = {"123456789","小鲁","男","1994-00-00","130222111133338888","河北省唐山市"};
                int i = 0;
                //解决中文不显示的问题 注意需要引入itext-asian.jar包
                BaseFont bf = BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
                java.util.Iterator<String> it = form.getFields().keySet().iterator();
                while(it.hasNext()){
                    String name = it.next().toString();
                    form.setFieldProperty(name,"textfont",bf,null);
                    System.out.println(name);
                    form.setField(name, str[i++]);
                }
                stamper.setFormFlattening(true);//如果为false那么生成的PDF文件还能编辑,一定要设为true
                stamper.close();
    
                Document doc = new Document();
                PdfCopy copy = new PdfCopy(doc, out);
                doc.open();
                int pageNums = reader.getNumberOfPages();
                for (int i1 = 1; i1 < pageNums+1; i1++) {
                    PdfImportedPage importPage = copy.getImportedPage(
                            new PdfReader(bos.toByteArray()), i1);
                    copy.addPage(importPage);
                }
                doc.close();
    
            } catch (IOException e) {
                System.out.println(1);
            } catch (DocumentException e) {
                System.out.println(2);
            }
    
    
        }



    展开全文
  • 原本是应该用pageOffice实现在线打开word的编辑,保存,转换成PDF,并完成签章,由于公司预算不够,pageOffice组件能购买,所以只能另想他法。 需要编辑的word文档的模板是固定的,数量也多,但对格式要求比较...

    原本是应该用pageOffice实现在线打开word的编辑,保存,转换成PDF,并完成签章,由于公司预算不够,pageOffice组件不能购买,所以只能另想他法。
    需要编辑的word文档的模板是固定的,数量也不多,但对格式要求比较严格,所以决定将模板全部做成HTML页面,用iText组件将HTML转换成PDF。
    需要导入的jar包:
    在这里插入图片描述
    首先需要将模板做成类似于下面这样的页面,横线上的数据是可以动态填充,编辑的,填充数据可以使用Freemarker
    在这里插入图片描述
    使页面可编辑可以使用Html的contenteditable=“true”在这里插入图片描述
    由于页面是可以动态编辑的,所以我们需要获得编辑后的页面的源码

    var outerHTML = document.documentElement.outerHTML;
    

    这里要注意,页面中的所有标签都是需要闭合的,如果不闭合的话iText组件在转换过程中会报错,页面中的字体需要是宋体,因为iText的转换需要有字体文件的支持,所以你同时需要在项目中或者服务器上准备一个字体文件
    在这里插入图片描述
    body {
    margin: 20px;
    font-family:SimSun;
    }
    下面是后台接收到页面源码后的处理

    @RequestMapping("acceptPage")
    	@ResponseBody
    	public Map acceptPage(HttpServletRequest request) throws Exception {
    		Map map=new HashMap();
    		String text = request.getParameter("text");
    		//使用jsoup来对html源码进行解析,能够校验格式的完整性,并生成一个新的Document
    		org.jsoup.nodes.Document parse = Jsoup.parse(text);
    		Elements meta = parse.getElementsByTag("meta");
    		String html = parse.html();
    		for (Element link : meta) {//手动为一些标签添加闭合
    			String s = link.outerHtml();
    			String s1=s.replace("/>",">");
    			html=html.replace(s,s1+"</meta>");
    		}
    		Elements link1 = parse.getElementsByTag("link");
    		for (Element link : link1) {
    			String s = link.outerHtml();
    			String s1=s.replace("/>",">");
    			html=html.replace(s,s1+"</link>");
    
    		}
    		html=html.replaceAll("&nbsp;","");
    		try {
    			String outputFile="E:\\test.pdf";
    			OutputStream os = new FileOutputStream(outputFile);
    			//中文宋体文件路径
    			String fontPath=StringUtil.trimSufffix(fontUrl, File.separator)+File.separator+"simsun.ttc";
    			//String fontPath= "C:\\simsun.ttc";
    			ITextRenderer render = new ITextRenderer();
    			ITextFontResolver fontResolver = render.getFontResolver();
    			fontResolver.addFont(fontPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
    			render.setDocumentFromString(html);
    			render.layout();
    			render.createPDF(os);
    			os.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    			map.put("state",1);
    			map.put("msg","文件转换失败!请联系管理员!");
    			return map;
    		}
    	}
    

    后面是对生成PDF文件进行签章的操作,就不再说了
    在这里插入图片描述
    这是最终生成的PDF,样式是没有问题的,也实现了可编辑,保存的功能。

    展开全文
  • 有人私信我说看了上篇文章,但是知道怎么创建pdf模板,而且有一些代码明白。更了那么久博客总算有人私信问我问题/(ㄒoㄒ)/~~,正好今天又做这个功能所以更一篇文章详细讲述从使用Adobe Acrobat DC创建模板,到...
  • ???...使用PDFelement制作pdf模板(数据域的名称对应后面插入的key)   二、导入maven依赖 <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</a
  • java实现pdf的生成下载打印,java生成pdf电子账单,java生成pdf合同模板,Itext编辑pdf,java使用itext
  • 代码如下:可以直接创建一个空的pdf带密码的,但是我想让他为只读,也就是让复制里面的内容!如何做到 String newPdfUrl = "c:\\Users\\Administrator\\Desktop\\pdfWater\\new.pdf"; Rectangle rect = new ...
  • echart生成报表并生成可下载PDF

    千次阅读 2018-09-26 09:25:14
    使用javascript生成pdf的类库.jsPDF支持不同类型的PDF文件格式,包括:文本,数字,图形,图片,同时你可以自由的编辑标题或者其它类型元素。支持互动的内容制作,例如,你可以输入文字或者数字,然后jsPDF帮助生成...
  • 一 背景 今天有朋友咨询这个问题,于是在网上搜索了一番,很多方案都是在linux... 将原PDF文件 切割为多张 单页图片,利用OCR逐页扫描单页图片获得文本信息,将识别的文本信息输出为新的PDF。最终结果的优劣大程度...
  • java-pdf-itext7、itextpdf 生成pdf 文档(支持中文字体) itext7 内置对中文(CJK字体)进行了支持,在依赖其他组件。 //处理中文问题 PdfFont font = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS...
  • 有时我们在浏览一些pdf文档的时候,发现这些文档没有对应的书签,这会使我们的阅读太方便。自己手动一个个创建这些书签效率太低,太浪费我们宝贵时间。这里介绍一个通过使用Adobe Acrobat Pro软件的简单方法,可以...
  • php 编辑PDF 废话多说,直接说需求 1、项目经理:“小江啊,我这里有份合同,是word格式的,你把它生成PDF格式,并且里面的内容还能编辑”。 大致思路 1、遇到这种需求,我有点震惊了,什么需求啊这是,以前从...
  • 当我在阅读pdf文档的时候,尤其是IT类的文档,很多都是扫描版的不可...adobe acrobat dc(制作可编辑pdf文档用的)autobookmark插件(自动生成or根据目录生成书签用的,把该插件目录copy到acrobat的plug_ins目录下)edi
  • iText编辑Pdf模板

    万次阅读 2015-05-05 13:49:32
    本文讲述JAVA如何操作PDF模板生成PDF文件。 1.由Word 文档生成PDF模板 工具:Microsoft Office Word , AdobeAcrobat_2015.exe(安装好后是 Adobe Acrobat DC 程序) 根据已有的word文档,用Adobe Acrobat DC通过调用...
  • java PDF 生成方案

    千次阅读 2011-03-04 15:24:00
    在企业应用中,碰到的比较多的PDF的需求,可能是针对某个比较典型的具备文档特性的内容,导出成为PDF进行存档。由于我们现在往往使用一些开源框架,诸如ssh来构建我们的应用,所以我们相对熟悉的方案是针对具体的...
  • jsPDF 是一个基于 HTML5 的客户端解决方案,用于生成各种用途的 PDF 文档。 使用方法很简单,只要引入 jsPDF 库,然后调用内置的方法就可以了。
  • reportlab教程1--第一个pdf生成

    千次阅读 2017-07-09 21:05:45
    实际生活工作中,我们会希望有些报告、图表可以自动生成,然后变成pdf,甚至直接发邮件到某个制定邮箱lib。这个时候有几种方式可以来实现,譬如用latex,但是这个似乎还要在电脑上装很多东西。还有一个pdfkit的东西...
  • 最近在看一个pdf,很长很长,1000多页。这种时候没有导航跳转是很痛苦的。所幸,这个pdf带了导航。但是,带的是一个错误的导航。。。更加痛苦。 经过一整圈的搜索,终于找到了一款神器!pdf补丁丁!功能强大,还免费...
  • Java PDF工具类(一)itextpdf | 根据设置好的PDF模板填充PDF(文字和图片) 这里主要使用到 itextpdf 的工具包 特点: 一对一,点对点的给对应的地方写值,比如模板里面放了个name标识,在程序里把“张三”赋给...
  • 问题:java 操作pdf 填入数据后,生成pdf无法显示中文。 ......... try { PdfReader reader = new PdfReader(path);//读模板文件 PdfStamper stamper = new PdfStamper(reader, new FileOutputStream...
  • Java生成PDF文档 iText使用PDF模板一

    千次阅读 2018-12-22 00:19:53
    最近在弄这个java生成pdf,哎,在网上查找了各种各样的学习资料,弄了几天,今天终于把这个效果简单的弄出来,所以,也把这个,我所走过的坑,作一个记录,提供接下来需要学习的人。 参考文献文档:...
  • 虽然使用着EXCEL进行编辑,但在传输过程中,都会先转换为PDF文件。那么我们该怎么转换EXCEL文档呢? 其实,使用PDF虚拟打印机就可以将EXCEL文档转换为PDF文档,并且转换速度快,转换质量高。 接下来,小编就来介绍...
  • java生成PDF的几种方法

    万次阅读 多人点赞 2018-12-28 17:24:44
    总结一下用java生成PDF的方法: A、itext-PdfStamper pdfStamper(俗称抠模板) B、itext-Document document(正常代码撰写) C、wkhtmltopdf(使用工具) 分析比较 方法 优点 缺点 A 代码...
  • // 如果为false,生成PDF文件可以编辑,如果为true,生成PDF文件可以编辑 stamper.setFormFlattening(true); stamper.close(); Document doc = new Document(); PdfCopy copy = new PdfCopy(doc, out); ...
  • Java 使用pdf 模板生成pdf文件 ——制作流程 1. 使用工具 adobe acrobat dc、word 2015 2. 使用 word 绘制一个 3*5 的表格并保存,如下: 3. 将文档另存为pdf格式 注:不要使用“另存为adobe pdf ”选项,这样...
  • Java编辑PDF 使用iText

    千次阅读 2018-12-26 12:08:34
    PDF】java使用Itext生成pdf文档--详解 - ssslinppp - 博客园 最推荐. 详细解释了iText中的各种概念. 我认为有价值的功能 PDF的4层结构 添加文本到绝对位置 使用模板:用Acrobat生成一个待填的表格,然后用...
  • doxygen生成PDF文档

    千次阅读 2017-09-07 22:23:45
    众所周知,能够利用doxygen生成pdf文档——但是,如果其中含有中文的话,那就会遇到一大堆问题无法顺利输出。我花了很长时间摸索,最终找到了让doxygen顺利生成中文pdf的办法。 转载自...
  • 有需要把一些html页面生成pdf文件,然后我就找一些用PHP把html页面围成pdf...pdflib,FPDF这两个方法是需要编写程序去生成pdf的,就也是讲支持直接把html页面转换成pdf;html2pdf这个虽然可以把html页面转换成pdf文件

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,797
精华内容 13,918
关键字:

不可编辑的pdf怎么生成