如何在PDF中创建非常大的页面的技能,你get了吗?

在PDF中创建巨大的页面

  PDF格式有一些任意的限制,大多数都是在Acrobat迁移到正式规范之前将其作为开始限制,并为每个使用PDF的人提供严格的限制,从Acrobat的实施限制开始。

  Acrobat的最大页面尺寸为200x200英寸,即一边超过5米或25平方米。事实证明,对于一个特殊的用户来讲5米远不够。值得庆幸的是,PDF修订版1.6中删除了这一限制,但不是通过更新Acrobat中的代码来删除此限制。而是在PDF语言中添加了新的“用户单元”属性。如果支持,这将作为倍增器,扩大页面的内容。

  我们在API的2.22版本中增加了对此的支持,并增加了一个新的PDFPage.setUserUnit()方法。在理想的世界中,我们会在内部处理所有的缩放数据,但由于各种原因,在字体大小方面做这些并不实际

  这是因为我们的PDFCanvas类(创建PDF“Form XObject”)不受此任意限制。由于PDFCanvas可以完成页面所能做的所有事情,因此您可以简单地在PDFCanvas对象上以实际大小创建图形,然后在最后将其绘制到缩放页面上。这避免了管理缩放的任何需要。

  以下示例显示了如何创建一个实际的足球场大小页面,并带有标记:

float w = 283464;    // 100 meters
float h = 195590;    // 68 meters
PDFCanvas canvas = new PDFCanvas(w, h);
PDFStyle style = new PDFStyle();
style.setLineWeighting(250);
style.setLineColor(Color.white);
canvas.setStyle(style);
canvas.drawLine(w/2, 0, w/2, h);     // halfway line
canvas.drawCircle(w/2, h/2, 28346);  // center circle
// penalty boxes
canvas.drawRectangle(0, (h-114048)/2, 46656, (h+114048)/2);
canvas.drawRectangle(w - 46656, (h-114048)/2, w, (h+114048)/2);
// goal boxes
canvas.drawRectangle(0, (h-56692)/2, 17007, (h+56692)/2);
canvas.drawRectangle(w - 17007, (h-56692)/2, w, (h+56692)/2);
 
// draw canvas on the page
// We're going to create a page 1/100th of the full size (1000mm x 690mm).
float userunit = 100;
PDFPage page = new PDFPage((int)(w/userunit), (int)(h/userunit));
page.setUserUnit(userunit);
page.drawCanvas(canvas, 0, 0, w/userunit, h/userunit);

  这里唯一的新方法是在上面用黄色标出的方法。美中不足的是,任何对页面区域的注释或超链接都必须手动缩放:因此,如果您将注释添加到上述页面,则需要将最终坐标除以100。

下载 Big Faceless Java PDF Library>>

猜你喜欢

转载自blog.csdn.net/xiaochuachua/article/details/80855585