书法字帖 PDF转化为可打印PDF
书法类的PDF,因为底色是黑色的,打印起来特别费墨,所以需要转化成白底黑字的文件,
才好打印。
1)用 pdfbox 的 ExtractImages 命令,抽出所有的图片
https://pdfbox.apache.org/2.0/commandline.html
java -jar pdfbox-app-2.0.11.jar ExtractImages "E:\Calligraphy\jiu.pdf"
2 ) 用 imagemagick 把图片转化为白底黑字。
可以创建一个bash 文件,在Cygwin里执行
for i in *.jpg do magick $i -negate negate_`basename $i .jpg`.jpg done
不可以直接 magick *.jpg -negate negate_.jpg . 这样转化出来的图片,不能和原图一一对应,后续就不好做了。
3)用gimp2 来分别处理每一张 图片
a) [颜色-> 去色] 转化为灰度图片
b) [颜色->阀值] 去掉多余的灰点
c) 自由选择工具 和 油漆桶 进行 精细去除
d) 用画笔工具,进行更精细的去除
4 ) 用自己做的工具,转化文件名 xxx1.jpg xxx01.jpg xxx2.jpg xxx02.jpg . 这样为下一步程序能顺利排序做好准备
5)运行java 程序
public static void main(String[] args) {if (args.length < 3) {System.out.println("ImagesToPdf <folderpath> <width> <height>");System.out.println("For example: ImagesToPdf \"E:\\Calligraphy\\create_pdf\\jiu_liqi\\jiu01_last\" 800 1200");return;}List<String> alist = listFilesAndFolders(args[0]);if (alist.size() < 2) {System.out.println("Error:File Count in Folder is < 2");return;}float width = Float.parseFloat(args[1]);float height = Float.parseFloat(args[2]);PDDocument document = new PDDocument();try {for(String s:alist) {PDPage page = new PDPage(new PDRectangle(width, height));PDPageContentStream contentStream = new PDPageContentStream(document, page);document.addPage(page); PDImageXObject img = PDImageXObject.createFromFile(args[0] + "/" + s, document); contentStream.drawImage(img, 0, 0);contentStream.close();}document.save("out.pdf");document.close();} catch (FileNotFoundException e) {// TODO Auto-generated catch block e.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace();}}public static List<String> listFilesAndFolders(String directoryName){File directory = new File(directoryName);//get all the files from a directoryArrayList<String> alist = new ArrayList<String>();File[] fList = directory.listFiles();for (File file : fList){alist.add(file.getName());}alist.sort(Comparator.naturalOrder());return alist;}
转载于:https://www.cnblogs.com/johnsonshu/p/9373966.html
书法字帖 PDF转化为可打印PDF相关推荐
- java生成pdf_Java实现PDF文件生成并且打印pdf文件 demo
## Java实现PDF生成并且打印pdf文件(附demo) #### 目录: 0. 效果预览 1. 准备环境 2. Java如何调用打印机进行打印 3. Java如何生成pdf打印文件 4. 实现p ...
- js打印pdf 使用Adobe reader 打印pdf
最近工作上有需要在js中打印pdf文件,从中遇到了一些问题,到现在已经解决了,做个记录.希望能帮到有需要的人. 我这边主要采用Adobe reader进行加载打印. ...
- 使用PDF处理控件Aspose.PDF以编程方式打印PDF文档完整攻略
许多公司在很大程度上减少了纸张的使用.但是,在某些情况下打印很重要.例如,系统可能包含PDF格式的在线订单的详细信息.他们需要在分发在线订单进行交付时打印PDF.他们大规模处理项目,因此手动打印每个文 ...
- 利用Aspose.PDF以编程方式打印PDF文档
使用C#打印PDF文件 可以使用C#或VB.net在.NET应用程序中自动打印PDF文件.您可以按照以下简单步骤打印PDF文件: 创建一个PdfViewer类的对象 加载输入的PDF文档 打印PDF文 ...
- python打印pdf文件_Python静默打印PDF到特定的打印机
我有一个PDF文档,我想用我的 python应用程序打印它. 我使用的方式是使用命令os.startfile('PDFfile.pdf',"print"),但它打开默认查看器(我的 ...
- java中使用pdfBox打印pdf;java web打印pdf;静默打印;jar程序打包成exe文件;exe4j的使用
java编写打印控件 web打印一直是个棘手的问题,市面上的第三方打印插件也是贵的离谱,这里给出一个可行的解决方案. SpringBoot项目的web服务,实现的功能: 获取电脑可用的打印机列表 设置 ...
- C# 打印PDF文档的10种方法
操作PDF文档时,打印是常见的需求之一.针对不同的打印需求,可分多种情况来进行,如设置静默打印.指定打印页码范围和打印纸张大小.双面打印.黑白打印等等.经过测试,下面将对常见的几种PDF打印需求做一些 ...
- 还在为打印PDF文件发愁?文档开发工具Spire.PDF 6种方式帮你搞定!
Spire.PDF(点击下载)是一个专业的PDF组件,能够独立地创建.编写.编辑.操作和阅读PDF文件,支持 .NET.Java.WPF和Silverlight.Spire.PDF的PDF API拥有 ...
- C# 六种方案打印PDF文档
打印PDF文档是开发人员经久不变的话题,常见的打印需求大致有以下六种: 用默认打印机打印PDF文档 用虚拟打印机打印PDF文档 指定打印机及PDF文档的打印页码范围 静默打印PDF文档 双面打印PDF ...
最新文章
- #每天一种设计模式# 观察者模式
- 08JavaScript中的函数
- 常用的 cocos2d-x 游戏开发工具
- JVM 调优实战--垃圾回收的常见算法
- 分类素材(part2)--python机器学习基础教程(上)
- java web与android互通的aes算法
- 一个女程序员的创业人生:胆识也是一种能力 作者:秋镇菜
- HDU 4870 Rating(高斯消元 )
- 品牌logo在EDM数据营销中的运用
- 机器学习--人口普查数据分析
- 贤内助——ICMP协议
- 主干分支开发模式_源代码主干分支开发四大模式
- 搞懂异地多活,看这篇就够了
- 【看表情包学Linux】GDB 调试教学 | gcc 和 g++ | 函数库
- 项目实训工作总结(2)
- 关于C语言里面struct的相关知识
- 图像仿射变换及图像扭曲(Image Warping)
- 黑中介北京链家,收了中介费,不给你服务
- perl/tk_Perl / Tk的基础
- 芯片的英文手册需要全部看吗?