java pdf分页显示_使用iText“重新分页”PDF
Disclaimer:
我正在使用iText 5.我知道这通常是不赞成的(与使用iText 7相比),但我正在处理使用iText 5的大量遗留代码,升级不受我的控制 .
Requirements:
A "simple" PDF / A作为输入接收(仅文本,这些是从RTF生成的),以及与所需的第一页长度(以英寸为单位)对应的浮点值 .
必须输出与输入PDF相同的PDF / A,除了它的分页如下:第一页长度=输入值;每个后续(不是第一个或最后一个)页面将填充标准页面长度;最后一页将被截断在距离页面底部最近的内容之下的恒定点数 . 请注意,输入和输出宽度将是相同且恒定的 .
Progress / Approach:
我扩展了 SimpleTextExtractionStrategy 以生成包含字体信息(大小和族,粗体或斜体等)的XML以及位置信息(相对于输入的第一页左上角的原点的绝对坐标系统PDF)对于从输入PDF中提取的每个"span"文本 .
然后,我逐页生成一个新的PDF(根据上面列出的要求,每个页面都是所需的长度),根据每个新页面的边界使用LINQ过滤提取的XML信息,并在适当的位置添加适当格式的文本使用 ColumnText.ShowTextAligned(...) .
Problem:
上面概述的方法很好 . 它生成具有所需页面结构的PDF,但某些信息在翻译时丢失,即彩色文本和带下划线的文本 . 虽然不应在这些PDF中看到彩色文本,但绝对必须检测带下划线的文本 .
这组要求还应包括带表格的PDF . 我最初计划实现一个不同的模块,该模块遵循表格PDF的相同界面,因为它们是从RTF生成的PDF中单独生成和使用的,而且iText内置了相对强大的表格功能 .
上面提到的两个问题,再加上我所描述的方法源于重用现有代码的尝试,这让我相信完全不同的方法可能是必要的,或者至少要好得多 . 在我看来,应该有一种方法来捕获内容字节信息并根据需要剪辑它以“重新分页”输入PDF,只担心移动沿页面边界的内容 .
基本上,我正在寻找(基于iText)推荐更好的方法 . 伪代码类型的答案或只是对可能有用的类/接口的建议是可接受的 . 虽然将文本和表格放在一起会很好,但任何与一个或另一个相关的建议也会受到赞赏 . 我已经仔细阅读了iText网站上的大部分可用文档和其他SO问题,但还没有找到我正在寻找的内容 .
请注意,此问题中不包含任何代码,因为我正在寻找与我尝试过的完全不同的高级方法 .
Edit:
我以前没有注意到它,但是我重用字体的方式(类似于this)导致了一些意想不到的(但是记录在案)这样的行为 . 似乎我需要避免在文本级别提取重新分页的信息,因为很难确保输入和输出之间字体的连续性 .
java pdf分页显示_使用iText“重新分页”PDF相关推荐
- 分页技巧_实现第一个分页功能(回复列表中的分页)
分页技巧_实现第一个分页功能(回复列表中的分页) ======================================== 假设共25条数据,每页显示10条,则共3页 first max - ...
- mysql查询前5000条记录分页显示_数据库 完整的查询语句,查询顺序及分页显示功能...
基本的查询语句 select (* | 字段名 | 四则运算 | 聚合函数) from 表名称; 取别名 当字段名显示较长时 可以添加别名 select 字段名 as 别名 from 表名称; ...
- antd 实现pdf 预览_解决react项目中PDF的显示与打印问题
最近项目中有这样一个需求: 1. 页面中可以显示pdf 2. 不希望把整个页面打印下来,只打印显示PDF的部分,可以使用浏览器自带打印功能 PDF文件的显示 拿到这个需求,真时一头雾水.因为没有做过类 ...
- JAVA删除pdf空白页_【教程】Spire.PDF 教程:在C# 删除 PDF 中的空白页
扫描双面打印纸张文档所创建的PDF可能包含空白页面,有时候空白页也可能是有意插入的. 在本文中,您将学习如何使用Spire.PDF检测并删除PDF文件中的空白页面. 空白页面通常被定义为不包含任何内容 ...
- java复制pdf_防止复制使用iText生成的pdf内容
正如@YuriyGalanter所指出的,PDF中的限制性权限主要是在PDF加密的上下文中定义的,参见PDF规范的第7.6.3.1节ISO 32000-1:2008: 如果指定了密码或访问限制,则应对 ...
- php ajax mysql 分页查询_基于PHP_MySql_Ajax的分页技术方案
一.引言 Ajax的全称是AsynchronousJavaScriptAndXML(异步JavaScript和XML),它不是一项新技术,而是很多成熟的技术的集合. 和Applet,Flash相比,A ...
- python pdf 图片水印_怎样用python给pdf批量添加水印并加密
很多时候需要给pdf添加水印,而且还要加密文件,这些在Python中是如何实现的呢?学过编程的小伙伴准备好迎接今天的挑战吧. 1.设置路径 import os os.getcwd() os.chdir ...
- python打印pdf特定页面_使用Python自由切分pdf文件提取任意页面
这个小知识来自公众号[python小屋] 问题描述: 给定一个PDF文件,对其进行任意切分,提取其中任意页面,保存为新的PDF文件. 准备工作: 安装扩展库PyPDF2,参考命令 pip instal ...
- pdf阅读器_适用于Windows的最佳PDF阅读器
pdf阅读器 Getting a good PDF viewer is easier than ever. Modern web browsers like Google Chrome, Mozill ...
- java创建pdf空白页_使用itext将html转成PDF,PDF空白的问题。
我将一个html转换成Pdf,结果转出的PDF是空白的. 经过排查,导致的原因是里面有一个最外层的div设置了CSS样式为width: 800px; 这个数字如果设置成660px就没有问题,再大就会空 ...
最新文章
- php和python对比-从PHP与Python的语言比较去了解什么是图灵完备
- java 编程思想 笔记_java编程思想笔记20170215
- Linux C中内联汇编的语法格式及使用方法
- dsd语言证书c1是什么,DSD一级德语语言证书考试在嘉兴高级中学举行
- linux上运行onedrive,教你如何在Linux中同步微软 OneDrive
- python学了真的很有用吗-python学了真的很有用吗?当然!赶紧学,不学后悔!
- opencv外接矩形矫正
- SPSS遇到缺失值怎么办?删除还是替换?【SPSS 067期】
- jvm System.gc()说明
- 【江枫 】Oracle 9i和10g在create index和rebuild index的统计信息的区别
- 蚂蚁区块链开放联盟链发布会 | 巴比特全程支持
- Java MD5和SHA256等常用加密算法
- 青蛙过河程序及其解析
- 电子产品销售分析练习项目
- 三种简单的数字倒叙方式
- 张一鸣没动手,王兴不紧张
- 今年 NFT 爆火,如何快速入行?(艺术家完整指南)
- 洛谷 P1747 好奇怪的游戏
- 【学习打卡】CAM可解释性分析-算法讲解
- 用计算机对视频进行剪裁和编辑,如何裁剪视频?怎么在电脑上裁剪视频?