我正在使用MigraDoc在PDF中创建字母以进行批量打印。这意味着我有多个业务需要获得上市批准通知。我已经创建了一个包含通用信息的模板,并在如下所示的foreach循环中为每个公司填写信函的详细信息:
import { ValidationService } from '../service/validation.service';
export class TreeNode<T> {
displayName: string;
children: TreeNode<T>[];
selected: boolean;
collapsed?: boolean;
indeterminate: boolean;
selectable: boolean;
value: T;
public static getAllNodeValues<T>(tree: TreeNode<T>):T[] {
return TreeNode.getAllCheckedNodes<T>(tree).map((nodes:TreeNode<T>) => nodes.value);
}
public static getTopLevelNodeValues<T>(tree: TreeNode<T>):T[] {
return TreeNode.getTopLevelCheckedNodes<T>(tree).map((nodes:TreeNode<T>) => nodes.value);
}
public static getTopLevelCheckedNodes<T>(tree: TreeNode<T>):TreeNode<T>[] {
if(tree.selected) {
return [tree];
} else if(tree.indeterminate) {
return tree.children.reduce(
(acc,child) => acc.concat(TreeNode.getTopLevelCheckedNodes(child)),[]);
} else {
return <TreeNode<T>[]>[];
}
}
public static getAllCheckedNodes<T>(tree: TreeNode<T>):TreeNode<T>[] {
if(tree.selected && tree.children) {
return tree.children.reduce(
(acc,child) => acc.concat(TreeNode.getAllCheckedNodes(child)),[tree]);
} else if (tree.selected) {
return [tree];
} else if(tree.children) {
return tree.children.reduce(
(acc,child) => acc.concat(TreeNode.getAllCheckedNodes(child)),[]);
} else {
return <TreeNode<T>[]>[];
}
}
public getValue(): T {
return this.value;
}
public matches(searchTerm:string):boolean {
if(this.displayName.toLowerCase().includes(searchTerm.toLowerCase())) {
return true;
}
if (!ValidationService.isEmptyList(this.children)) {
return this.children.some((child) => child.matches(searchTerm));
}
return false;
}
public selectChildren(selected:boolean):void {
if (!ValidationService.isEmptyList(this.children)) {
this.children.map((child) => {
child.selected = selected;
child.indeterminate = false;
child.selectChildren(selected);
});
}
}
}
我不共享此处调用的某些私有方法的代码。 FillDetails(business)是一个表,可以具有一行或多行。该表信息及其下的内容被推到具有标题且与之重叠的下一页。
我可以跳过每个业务从第二页开始的页眉和页脚信息,或者避免与页眉重叠,并以某种方式将字母的正文保持为静态大小。
答案 0 :(得分:0)
使用MigraDoc时,必须设置一个足以容纳标题的顶部边框。如果标题大于保留区域,则标题和正文可能会重叠,而MigraDoc无法阻止。
仅在首页上放置标题是另一种选择。