Java 阅读pdf中的现有页边距
我用iText创建了一个pdf文件。pdf是A4文件,并定义了一些页边距Java 阅读pdf中的现有页边距,java,pdf,itext,Java,Pdf,Itext,我用iText创建了一个pdf文件。pdf是A4文件,并定义了一些页边距 Paragraph paragraph = new Paragraph(); Document document = new Document(PageSize.A4, 36, 72, 108, 180); PdfWriter.getInstance(document, new FileOutputStream("c:\\margin.pdf")); document.open();
Paragraph paragraph = new Paragraph();
Document document = new Document(PageSize.A4, 36, 72, 108, 180);
PdfWriter.getInstance(document, new FileOutputStream("c:\\margin.pdf"));
document.open();
document.add(new Paragraph("Margin--->>roseinia.net"));
document.close();
现在在另一个程序中,我想阅读上面pdf的边距。
在iText或其他库中是否有这样做的方法?PDF本身并没有真正的页边空白概念。有许多与给定页面关联的边界框:
- MediaBox—页面所需的物理介质的大小
- CropBox—查看器中可见页面的大小(如果不存在,则默认为MediaBox)
- BleedBox—用于在生产环境中渲染的剪裁边界(可能包括折叠空间)
- TrimBox-修剪后完成页面的预期尺寸
- ArtBox-页面有意义内容的边界
ArtBox可能就是“边距”被翻译成的东西。我在这台机器上没有iText主干代码的副本,但我很确定它不会将边距信息写入它生成的PDF中。即使主干有,我也不能告诉你添加了哪个版本。。。再说一次,这里没有行李箱 但是,有两种可能的解决方案: 1) 手动将信息写入PDF。鉴于您拥有生成文档的源,您应该能够修改该源。这对已经生成的文档没有帮助,但总比没有好。这也比另一种方法简单得多。您可以在几个地方编写此信息。 a) 您可以将信息作为字符串添加到PDF“doc info fields”(元数据)中。我很确定iText允许您编写自定义字段。。。是的
new Meta("margins", buildStringOfMyMargins() );
然后,您必须再次解析该字符串。记住,在doc.open()之前必须添加元信息
b) 写出你自己的艺术盒(如普林斯所述)。这需要第二次使用PdfStamper将数据直接写入每个页面的PdfDictionary
c) 根据您提供的页边距修改iText以包含艺术盒
2) 解析出内容位置。当前的com.itextpdf.text.pdf.parser.*代码不处理线条艺术,这可能对您来说很重要,也可能不重要。您必须确定给定页面上每个元素的边界框,并计算包含所有元素的边界框。很多工作