2015-04-24 3 views
0

При программировании PDF при добавлении большого количества видимых материалов на экран (например, текст, рисование многоугольника, изображение, цвета, граница и т. Д.).Есть ли возможность отображать сетку, для программирования позиций видимого материала на экране?

Есть ли способ включить или отобразить сетку (могут быть точки) для измерения положения оси x x &? Если да, то какие объекты следует искать в PDFClown?

Мне легче измерить местоположение местоположения и ширину/высоту объектов, чем проводить время, вычисляя точки и делая ошибку.

Спасибо.

P.S. - Кроме того, нам не нужно распечатывать бумагу и накладывать на нее пластиковую сетку для измерения. Сохраните документы и пойдите зеленым. ;-)

+0

Как насчет его рисования? Просто добавьте операции для рисования сетки на содержание страницы во время разработки. – mkl

ответ

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