我正在创建一个 pdf-document。首先,我向 PdfWriter 添加一个表和一些文本。现在我想添加一个 costum 模板(包括图像和文本):我必须获得直接内容,这是 PdfWriter-layer 上的一层:
over= PdfWriter.getDirectContent();
我想在 PdfWriter-layer 上的内容之后准确设置模板。我可以用
writer.getVerticalPosition(true)
我在 PdfWriter-layer 上计算 y-Position。这样我就可以将 costum 模板添加到该位置的上层。现在回到 PdfWriter-layer 怎样才能在 over-layer 的 tempalte 之后设置 PdfWriter-layer 的位置?!
有人可以帮忙吗?提前致谢。
1 回答
混合内容添加
document.add()
和直接内容我们总是一个微妙的操作。您需要知道自定义模板的高度,然后添加一些与该高度匹配的空白区域。但是:如果自定义模板的内容与页面不匹配,您打算怎么做?我会反对你的计划,我建议采用另一种方法.
我假设您的自定义模板是
PdfTemplate
对象。在这种情况下,您可以将此对象包装在Image
对象中,并使用document.add()
添加模板。例如,见:更改 PDF 旋转文本上的字体
在此示例中,我们使用条形码和一些文本创建
PdfTemplate
:我们想将
template
添加到带有document.add()
的文档中,因此我们将模板包装在Image
对象中:我们现在可以将此图像添加到文档中:
之后,我们可以添加额外的内容:
该内容将添加到
template
的正确位置。您不必再担心使用getVerticalPosition()
获取 Y 位置,并且在添加模板后无需担心设置 Y 位置。如果模板不适合当前页面,它将自动移动到下一页。**重要说明:**也许您担心模板的分辨率。你不应该。如果模板由矢量数据组成,则将数据包装在
Image
对象内不会将其更改为栅格数据。矢量数据将被保留。这在条形码示例中很重要,因为您不希望条形码的质量因使其成为光栅图像而恶化。