是否有显示网格的选项,用于在屏幕上编程可见材料的位置?

时间:2015-04-24 14:37:55

标签: pdfclown

在进行PDF编程时,在屏幕上添加许多可见素材(如文字,多边形绘图,图片,颜色,边框等)。

有没有办法打开或显示网格(可以是点)来测量x& y轴定位?如果是这样,我应该在PDFClown中寻找什么对象?

我发现测量物体的位置和宽度/高度比花费时间计算点数和犯错误更容易。

感谢。

P.S。 - 此外,我们不必打印出纸张并将塑料网格放在上面进行测量。保存文件并变绿。 ; - )

1 个答案:

答案 0 :(得分:1)

绘制网格怎么样?只需在开发过程中添加将其绘制到页面内容的操作。

E.g。您可以在this sample基于PDF Clown示例HelloWorldSample.java

执行此操作
// 1. Instantiate a new PDF file!
/*
 * NOTE: a File object is the low-level (syntactic) representation of a
 * PDF file.
 */
org.pdfclown.files.File file = new org.pdfclown.files.File();

// 2. Get its corresponding document!
/*
 * NOTE: a Document object is the high-level (semantic) representation
 * of a PDF file.
 */
Document document = file.getDocument();

// 3. Insert the contents into the document!
populate(document);

// 3.5 Add a grid to the content
addGrid(document);

// 4. Serialize the PDF file!
file.save(new File(RESULT_FOLDER, "helloWorld-grid.pdf"), SerializationModeEnum.Standard);

file.close();

使用辅助方法addGrid

void addGrid(Document document)
{
    for (Page page: document.getPages())
    {
        Dimension2D pageSize = page.getSize();
        PrimitiveComposer composer = new PrimitiveComposer(page);
        composer.beginLocalState();

        composer.setStrokeColor(new DeviceRGBColor(1, 0, 0));
        for (int x = 0; x < pageSize.getWidth(); x+=20)
        {
            composer.startPath(new Point2D.Float(x, 0));
            composer.drawLine(new Point2D.Double(x, pageSize.getHeight()));
        }

        for (int y = 0; y < pageSize.getHeight(); y+=20)
        {
            composer.startPath(new Point2D.Float(0, y));
            composer.drawLine(new Point2D.Double(pageSize.getWidth(), y));
        }

        composer.stroke();

        composer.end();
        composer.flush();
    }
}

这导致如下:

Sample result