UNPKG

devexpress-richedit

Version:

DevExpress Rich Text Editor is an advanced word-processing tool designed for working with rich text documents.

31 lines (30 loc) 1.7 kB
import { Point } from '@devexpress/utils/lib/geometry/point'; import { PdfBoxExporter } from './box-exporter'; export class PdfLayoutRowExporter { constructor(doc, textFontMapCache, measurer) { this.doc = doc; this.boxExporter = new PdfBoxExporter(doc, textFontMapCache, measurer); } export(row, columnOffset) { const rowOffset = Point.plus(columnOffset, row); rowOffset.y += row.getSpacingBefore(); const baseLine = (row.baseLine - row.getSpacingBefore()) / (row.height - row.getSpacingBefore() - row.getSpacingAfter()); let lastBoxIndexWhatCanStrikeoutAndUnderline = row.boxes.length - 1; for (let box; box = row.boxes[lastBoxIndexWhatCanStrikeoutAndUnderline]; lastBoxIndexWhatCanStrikeoutAndUnderline--) if (!box.renderNoStrikeoutAndNoUnderlineIfBoxInEndRow()) break; if (row.numberingListBox) { this.doc.save(); this.boxExporter.export(row, row.numberingListBox.textBox, 0, rowOffset, baseLine, lastBoxIndexWhatCanStrikeoutAndUnderline); if (row.numberingListBox.separatorBox) this.boxExporter.export(row, row.numberingListBox.separatorBox, 0, rowOffset, baseLine, lastBoxIndexWhatCanStrikeoutAndUnderline); this.doc.restore(); } const lastVisibleBoxIndex = row.getLastVisibleBoxIndex(); for (let boxIndex = 0; boxIndex <= lastVisibleBoxIndex; boxIndex++) { this.doc.save(); this.boxExporter.export(row, row.boxes[boxIndex], boxIndex, rowOffset, baseLine, lastBoxIndexWhatCanStrikeoutAndUnderline); this.doc.restore(); } } }