首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iText中合并两个模板

在iText中合并两个模板
EN

Stack Overflow用户
提问于 2010-05-06 07:17:22
回答 3查看 5.1K关注 0票数 1

假设我有两个用Adobe Acrobat创建的PDF模板,这两个模板都是单页的8.5x11文档。第一个模板(A.pdf)包含页面上半部分的内容。第二个模板(B.pdf)包含页面下半部分的内容。(碰巧两个模板中的内容不会相互“重叠”。)

我想使用iText来使用这两个模板,并从它创建一个单独的、“合并”的模板(C.pdf),它只是一个页面(上半部分是a.pdf的内容,下半部分是b.pdf的内容)。

(我不想将这两个文件“合并”成一个两页的文档。我需要的最终产品是一个单一的页面。)

我将在servlet环境(Tomcat6)中运行iText,但我不认为这对答案有什么影响。

这个是可能的吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-10 07:26:18

我在iText mailing list上得到了Mark Storer的帮助。解决方案是为每个文件获取PdfTemplate对象,然后使用addTemplate()方法将它们添加到一起,例如:

代码语言:javascript
复制
PdfTemplate topOfPage = writer.getImportedPage( reader, 1 );
PdfTemplate bottomOfPage = writer.getImportedPage( reader, 2 );

PdfContentByte content = writer.getDirectContent();

// in PDF, "0, 0" is the lower left corner.
content.addTemplate( bottomOfPage );
content.addTemplate( topOfPage, 0, bottomOfPage.getHeight() );
票数 4
EN

Stack Overflow用户

发布于 2010-05-07 05:21:43

也许这个代码示例可以帮助http://kickjava.com/src/com/lowagie/tools/handout_pdf.java.htm

票数 1
EN

Stack Overflow用户

发布于 2016-03-28 02:09:20

更常用的情况是合并单页背景pdf和多页源pdf文件。背景pdf仅包含例如页眉和页脚。源pdf已经准备了上边距和下边距作为此场景中背景pdf模板的页眉和页脚的占位符。如果你正在寻找这个-就像我一样-你会在这里遇到这个帖子,你可以应用以下方法:

代码语言:javascript
复制
tplFile$ = "c:/0/background.pdf"
srcFile$ = "c:/0/source1.pdf"
destFile$ = "c:/0/newMergedDest.pdf"

declare Document destDoc!
declare PdfWriter destWriter!
declare PdfReader mainDocReader!
declare PdfReader singlePageBackgroundReader!
declare PdfImportedPage mainDocPage!
declare PdfImportedPage backgroundPage!
declare PdfContentByte dcb!
declare PdfContentByte ucb!

destDoc! = new Document()
destWriter! = PdfWriter.getInstance(destDoc!, new FileOutputStream(destFile$))
destDoc!.open()
dcb! = destWriter!.getDirectContent()
ucb! = destWriter!.getDirectContentUnder()
mainDocReader! = new PdfReader(srcFile$)
singlePageBackgroundReader! = new PdfReader(tplFile$)
backgroundPage! = destWriter!.getImportedPage(singlePageBackgroundReader!,1)
for i=1 to mainDocReader!.getNumberOfPages()
    destDoc!.newPage()
    mainDocPage! = destWriter!.getImportedPage(mainDocReader!,i)
    dcb!.addTemplate(mainDocPage!,0,0)
    ucb!.addTemplate(backgroundPage!,0,0)
next i
destDoc!.close()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2777415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档