@@ -44,16 +44,25 @@ This file is part of the iText (R) project.
44
44
45
45
46
46
import com .itextpdf .io .LogMessageConstant ;
47
+ import com .itextpdf .io .font .FontConstants ;
47
48
import com .itextpdf .kernel .color .ColorConstants ;
49
+ import com .itextpdf .kernel .font .PdfFontFactory ;
50
+ import com .itextpdf .kernel .geom .PageSize ;
48
51
import com .itextpdf .kernel .geom .Rectangle ;
49
52
import com .itextpdf .kernel .pdf .PdfDocument ;
50
53
import com .itextpdf .kernel .pdf .PdfWriter ;
51
54
import com .itextpdf .kernel .utils .CompareTool ;
52
55
import com .itextpdf .layout .border .SolidBorder ;
56
+ import com .itextpdf .layout .element .AreaBreak ;
57
+ import com .itextpdf .layout .element .Cell ;
53
58
import com .itextpdf .layout .element .Div ;
54
59
import com .itextpdf .layout .element .List ;
55
60
import com .itextpdf .layout .element .Paragraph ;
61
+ import com .itextpdf .layout .element .Table ;
56
62
import com .itextpdf .layout .property .ListNumberingType ;
63
+ import com .itextpdf .layout .property .Property ;
64
+ import com .itextpdf .layout .property .UnitValue ;
65
+ import com .itextpdf .layout .renderer .DocumentRenderer ;
57
66
import com .itextpdf .test .ExtendedITextTest ;
58
67
import com .itextpdf .test .annotations .LogMessage ;
59
68
import com .itextpdf .test .annotations .LogMessages ;
@@ -229,5 +238,201 @@ public void keepTogetherDivTest02() throws IOException, InterruptedException {
229
238
Assert .assertNull (new CompareTool ().compareByContent (outFile , cmpFileName , destinationFolder , "diff" ));
230
239
}
231
240
241
+ @ Test
242
+ @ LogMessages (messages = {
243
+ @ LogMessage (messageTemplate = LogMessageConstant .CLIP_ELEMENT , count = 8 )
244
+ })
245
+ public void narrowPageTest01 () throws IOException , InterruptedException {
246
+ String testName = "narrowPageTest01.pdf" ;
247
+ String outFileName = destinationFolder + testName ;
248
+ String cmpFileName = sourceFolder + "cmp_" + testName ;
249
+
250
+ PdfDocument pdfDoc = new PdfDocument (new PdfWriter (outFileName ));
251
+ Document doc = new Document (pdfDoc );
252
+
253
+ Table tbl = new Table (UnitValue .createPointArray (new float []{30.0F , 30.0F , 30.0F , 30.0F }));
254
+ tbl .setWidth (120.0F );
255
+ tbl .setFont (PdfFontFactory .createFont (FontConstants .COURIER ));
256
+ tbl .setFontSize (8.0F );
257
+
258
+ for (int x = 0 ; x < 12 ; x ++) {
259
+ for (int y = 0 ; y < 4 ; y ++) {
260
+ Cell cell = new Cell ();
261
+ cell .add (new Paragraph ("row " + x ));
262
+ cell .setHeight (10.5f );
263
+ cell .setMaxHeight (10.5f );
264
+ cell .setKeepTogether (true );
265
+ tbl .addCell (cell );
266
+ }
267
+ }
268
+
269
+ doc .add (tbl );
270
+
271
+ doc .close ();
272
+
273
+ Assert .assertNull (new CompareTool ().compareByContent (outFileName , cmpFileName , destinationFolder , testName + "_diff" ));
274
+ }
275
+
276
+ @ Test
277
+ @ LogMessages (messages = {
278
+ @ LogMessage (messageTemplate = LogMessageConstant .CLIP_ELEMENT , count = 2 )
279
+ })
280
+ public void narrowPageTest02 () throws IOException , InterruptedException {
281
+ String testName = "narrowPageTest02.pdf" ;
282
+ String outFileName = destinationFolder + testName ;
283
+ String cmpFileName = sourceFolder + "cmp_" + testName ;
232
284
285
+ PdfDocument pdfDoc = new PdfDocument (new PdfWriter (outFileName ));
286
+ Document doc = new Document (pdfDoc );
287
+ doc .setRenderer (new SpecialOddPagesDocumentRenderer (doc , new PageSize (102.0F , 132.0F )));
288
+
289
+ Paragraph p = new Paragraph ("row 10" );
290
+ Div div = new Div ();
291
+ div .add (p );
292
+ div .setKeepTogether (true );
293
+
294
+ doc .add (new Paragraph ("a" ));
295
+ doc .add (div );
296
+ doc .add (new AreaBreak ());
297
+
298
+ div .setHeight (30 );
299
+ doc .add (new Paragraph ("a" ));
300
+ doc .add (div );
301
+ doc .add (new AreaBreak ());
302
+ doc .add (new AreaBreak ());
303
+
304
+ div .deleteOwnProperty (Property .HEIGHT );
305
+ doc .add (div );
306
+ doc .add (new AreaBreak ());
307
+ doc .add (new AreaBreak ());
308
+
309
+ div .setHeight (30 );
310
+ doc .add (div );
311
+
312
+ doc .close ();
313
+
314
+ Assert .assertNull (new CompareTool ().compareByContent (outFileName , cmpFileName , destinationFolder , testName + "_diff" ));
315
+ }
316
+
317
+ @ Test
318
+ public void narrowPageTest02A () throws IOException , InterruptedException {
319
+ String testName = "narrowPageTest02A.pdf" ;
320
+ String outFileName = destinationFolder + testName ;
321
+ String cmpFileName = sourceFolder + "cmp_" + testName ;
322
+
323
+ PdfDocument pdfDoc = new PdfDocument (new PdfWriter (outFileName ));
324
+ Document doc = new Document (pdfDoc );
325
+ doc .setRenderer (new SpecialOddPagesDocumentRenderer (doc , new PageSize (102.0F , 102.0F )));
326
+
327
+ Paragraph p = new Paragraph ("row 10" );
328
+ p .setKeepTogether (true );
329
+
330
+ doc .add (new Paragraph ("a" ));
331
+ doc .add (p );
332
+ doc .add (new AreaBreak ());
333
+
334
+ p .setHeight (30 );
335
+ doc .add (new Paragraph ("a" ));
336
+ doc .add (p );
337
+ doc .add (new AreaBreak ());
338
+ doc .add (new AreaBreak ());
339
+
340
+ p .deleteOwnProperty (Property .HEIGHT );
341
+ doc .add (p );
342
+ doc .add (new AreaBreak ());
343
+ doc .add (new AreaBreak ());
344
+
345
+ p .setHeight (30 );
346
+ doc .add (p );
347
+
348
+ doc .close ();
349
+
350
+ Assert .assertNull (new CompareTool ().compareByContent (outFileName , cmpFileName , destinationFolder , testName + "_diff" ));
351
+ }
352
+
353
+ private static class SpecialOddPagesDocumentRenderer extends DocumentRenderer {
354
+ private PageSize firstPageSize ;
355
+
356
+ public SpecialOddPagesDocumentRenderer (Document document , PageSize firstPageSize ) {
357
+ super (document );
358
+ this .firstPageSize = new PageSize (firstPageSize );
359
+ }
360
+
361
+ @ Override
362
+ protected PageSize addNewPage (PageSize customPageSize ) {
363
+ PageSize newPageSize = null ;
364
+ switch (currentPageNumber % 2 ) {
365
+ case 1 :
366
+ newPageSize = firstPageSize ;
367
+ break ;
368
+ case 0 :
369
+ default :
370
+ newPageSize = PageSize .A4 ;
371
+ break ;
372
+ }
373
+ return super .addNewPage (newPageSize );
374
+ }
375
+ }
376
+
377
+ @ Test
378
+ @ LogMessages (messages = {
379
+ @ LogMessage (messageTemplate = LogMessageConstant .ELEMENT_DOES_NOT_FIT_AREA , count = 1 )
380
+ })
381
+ public void updateHeightTest01 () throws IOException , InterruptedException {
382
+ String testName = "updateHeightTest01.pdf" ;
383
+ String outFileName = destinationFolder + testName ;
384
+ String cmpFileName = sourceFolder + "cmp_" + testName ;
385
+
386
+ PdfDocument pdfDoc = new PdfDocument (new PdfWriter (outFileName ));
387
+ pdfDoc .setDefaultPageSize (new PageSize (102.0F , 102.0F ));
388
+ Document doc = new Document (pdfDoc );
389
+
390
+
391
+ Div div = new Div ();
392
+ div .setBackgroundColor (ColorConstants .RED );
393
+ div .add (new Paragraph ("row" ));
394
+ div .add (new Paragraph ("row 10" ));
395
+
396
+ div .setKeepTogether (true );
397
+ div .setHeight (100 );
398
+
399
+ doc .add (new Paragraph ("a" ));
400
+ doc .add (div );
401
+
402
+ doc .close ();
403
+
404
+ Assert .assertNull (new CompareTool ().compareByContent (outFileName , cmpFileName , destinationFolder , testName + "_diff" ));
405
+ }
406
+
407
+ @ Test
408
+ @ LogMessages (messages = {
409
+ @ LogMessage (messageTemplate = LogMessageConstant .CLIP_ELEMENT , count = 1 ),
410
+ @ LogMessage (messageTemplate = LogMessageConstant .OCCUPIED_AREA_HAS_NOT_BEEN_INITIALIZED , count = 22 ),
411
+
412
+ })
413
+ //TODO DEVSIX-1977
414
+ public void partialTest01 () throws IOException , InterruptedException {
415
+ String testName = "partialTest01.pdf" ;
416
+ String outFileName = destinationFolder + testName ;
417
+ String cmpFileName = sourceFolder + "cmp_" + testName ;
418
+
419
+ PdfDocument pdfDoc = new PdfDocument (new PdfWriter (outFileName ));
420
+ pdfDoc .setDefaultPageSize (PageSize .A7 );
421
+ Document doc = new Document (pdfDoc );
422
+
423
+ Div div = new Div ();
424
+ div .setBackgroundColor (ColorConstants .RED );
425
+ div .setKeepTogether (true );
426
+ div .setHeight (200 );
427
+
428
+ for (int i = 0 ; i < 30 ; i ++) {
429
+ div .add (new Paragraph ("row " + i ));
430
+ }
431
+
432
+ doc .add (div );
433
+
434
+ doc .close ();
435
+
436
+ Assert .assertNull (new CompareTool ().compareByContent (outFileName , cmpFileName , destinationFolder , testName + "_diff" ));
437
+ }
233
438
}
0 commit comments