【发布时间】:2019-06-10 10:53:54
【问题描述】:
我想更改 PDF 文档中特定几页的页面方向。 PDF 文档是使用 html2pdf 从 html 模板创建的。它是这样的:如果页面的内容(通常是表格)太宽而无法以纵向显示,则以横向显示页面。
按照[如何将页面旋转为横向且页面内容应为纵向 iTextpdf][1]
中的提示[1]: how to rotate pages into landscape and page content should be in portrait iTextpdf 我已经创建了我的自定义标签和 TagWorker。
public class LandscapeTagWorker extends BodyTagWorker {
public LandscapeTagWorker(IElementNode element, ProcessorContext context) {
super(element, context);
}
/**
* @param element
* @param context
* @see com.itextpdf.html2pdf.attach.ITagWorker#processEnd(com.itextpdf.html2pdf.html.node.IElementNode, com.itextpdf.html2pdf.attach.ProcessorContext)
*/
@Override
public void processEnd(IElementNode element, ProcessorContext context) {
super.processEnd(element, context);
String value = element.getAttribute("value");
if ( "true".equalsIgnoreCase(value) ) {
PdfDocument doc = context.getPdfDocument();
doc.setDefaultPageSize(doc.getDefaultPageSize().rotate());
}
}
}
问题是:首先,这无济于事。即使可行,我也不想更改整个文档的方向,而只想更改找到 <landscape value="true"> 内容的页面的方向。
如何从 ProcessorContext/PdfDocument 中提取当前页面以及如何仅更改这些页面的页面方向?
【问题讨论】:
-
假设横向设置为 true 的元素似乎不是作为页面的第一个元素呈现的。你想让它移动到下一页吗?或者您是否希望在该页面上重新呈现之前呈现的内容并更改尺寸?
-
“风景”元素应该在一个新页面上。因此,当 html2pdf 遇到“lanscape”标签时,它应该将该内容移动到新页面并更改页面方向。