我使用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();
document.add(new Paragraph("Margin--->>roseinia.net"));
document.close();
现在在另一个程序中,我想阅读上面pdf的边距。 有没有办法在iText或其他库中做到这一点?
答案 0 :(得分:2)
PDF本身并没有真正的边缘概念。有一些与给定页面关联的边界框:
ArtBox 可能正在被翻译成“边距”。
答案 1 :(得分:0)
我在这台机器上没有iText中继代码的副本,但我很确定它不会在它生成的PDF中写入边距信息。即使后备箱确实如此,我也无法告诉您哪个版本已经添加了......再次,这里没有主干。
然而,这个问题有几种可能的解决方案:
1)手动将信息写入PDF。鉴于您拥有生成文档的源,您应该能够修改该源。这对已经生成的文档没有帮助,但总比没有好。它也比替代方案容易得多。您可以在几个地方写下此信息。 a)您可以将信息作为字符串添加到PDF“doc info fields”(元数据)中。我很确定iText可以让你编写自定义字段......是的。
new Meta("margins", buildStringOfMyMargins() );
然后你必须再次解析字符串。请记住,您必须在doc.open();
之前添加元信息b)写出你自己的ArtBox(如plinth所述)。这需要第二次使用PdfStamper将数据直接写入每个页面的PdfDictionary
c)修改iText以包含基于您提供的边距的艺术框。
2)解析内容位置。当前的com.itextpdf.text.pdf.parser。*代码不处理艺术线条,这对您来说可能是也可能不是非常重要。您必须确定给定页面上每个元素的边界框,并计算包含它们的边界框。很多工作。