除去pdf文件内部的超链接/a标签
来源:互联网 发布:软件开发人员外包 编辑:程序博客网 时间:2024/06/05 18:31
pdf格式是一个比较固定的,正常状态下是不能编辑的格式,主要用来传递信息和展示,但项目中或迟或早的肯定会遇到需要修改pdf内容的需求,目前遇到的就有:pdf2html, pdf2png, pdf内部去链接, pdf加水印, 修改删除pdf文档内容(去水印)……
目前, 所有需求都已经实现, 具体如下:
pdf2png: 用imagemagick可以实现, 不赘述;
pdf2html: 使用html2pdfEX, http://blog.csdn.net/chijiaodaxie/article/details/47684089
pdf加水印: 使用java的itext模块, http://blog.csdn.net/chijiaodaxie/article/details/50223479
pdf内容修改(有内容遮罩, 定点删除, 内容匹配删除)的批量自动化, 已有代码, 合适的时候在放出来
本节讲pdf内部去链接
其实用到的是比较偏门的方法: pdf的merge功能会导致pdf里面所有的链接失效
1. 使用语言的模块(如java的itext, python的pyPDF, reportlab):
existing_pdf = PdfFileReader(file(input_pdf, "rb")) isEncrypted = existing_pdf.isEncrypted if isEncrypted: existing_pdf.decrypt('') page_nums = existing_pdf.getNumPages() output = PdfFileWriter() pdf_size = getPdfsize(input_pdf, 0, 0) packet = StringIO.StringIO() doc = LetterMaker(packet, "The MVP", 10,pdf_size) doc.createDocument() doc.savePDF() packet.seek(0) new_pdf = PdfFileReader(packet) page_blank = new_pdf.getPage(0) merger_error = False for page_index in range(page_nums)[:]: # output.addPage(page_blank) print "Page: ",page_index + 1 page = copy.deepcopy(page_blank) page2 = copy.deepcopy(page_blank) try: exist_page = existing_pdf.getPage(page_index) # exist_page.trimBox.lowerLeft = (25, 25) # exist_page.trimBox.upperRight = (225, 225) # exist_page.cropBox.lowerLeft = (0, 0) # exist_page.cropBox.upperRight = pdf_size print exist_page.artBox print exist_page.bleedBox print exist_page.cropBox print exist_page.cropBox.lowerLeft print type(exist_page.cropBox.lowerLeft) print type(exist_page.cropBox.lowerLeft[0]) print type(exist_page.cropBox.lowerLeft[1]) print exist_page.cropBox.upperRight print exist_page.mediaBox print exist_page.trimBox # page.mergePage(exist_page.rotateClockwise(180)) # page2.mergePage(page.rotateClockwise(180)) except Exception, e: merger_error = True for page_index in range(page_nums)[:]: output.addPage(page) break output.addPage(exist_page)
其中mergePage可以去链接, 操作cropBox可以调节pdf的展示区域, 实现假修改
- 使用pdftk的background/stamp功能
直接在command line运行(需要将下面的string用python的语法解析):
"pdftk '%s' input_pw '' multibackground '%s' output '%s'" % (blank_pdf, input_pdf, output_pdf)
merge时会去链接的原因分析: 说到底是pdf这种格式导致的, 其文本和链接存在不同的地方, merge时只merge了文本(再多的楼主也不太清楚)
1 0
- 除去pdf文件内部的超链接/a标签
- javascript点击<a>超链接标签的实现
- 超链接标签<a>缓存问题的解决
- 超链接—a标签的使用
- 超链接<a>标签
- 超链接标签a
- 超链接标签—a
- HTML超链接标签<a>
- a超链接标签
- html a超链接标签
- html a超链接标签
- 超链接<a>标签
- xslt三种带图片的超链接(a标签,img标签)写法
- 实现点击超链接<a>标签,点击的标签变色,标注
- 如何让外面div超链接不影响内部的超链接a
- 为pdf文件添加设置超链接的小技巧
- js隐藏a标签超链接
- 黑马程序员-超链接标签<a>
- You Can't Manage What You Don't Measure
- MATLAB——scatter的简单应用
- openjudge放苹果
- android 使用String.format("%.2f",67.876)自已定义语言(俄语、西班牙语)会把小数点变为逗号
- 上拉下拉刷新(2)网络加载图片
- 除去pdf文件内部的超链接/a标签
- java.lang.RuntimeException: setAudioSource failed.
- 2015河南科技学院高校CSDN俱乐部与计算机协会共同举办PPT大赛
- Java WebService-CXF-基于SOAP的Web服务
- 利用软妹纸ui写的前端
- Java的国际化支持(I18N问题)
- 我的国一之路
- 使用eclipse发布web服务出现"Error occured when adding the module, xxxxxx, to the server"
- CodeForces 373B