0

我到处寻找这个,但找不到有效的答案。我有 2 个输入 PDF(只有 2 个)。

我想将 PDF2 添加到 PDF1(新页面)的底部,然后将两者都输出为 PDF3。

如果您在 vb.net 中提交任何代码,任何人都可以提供帮助,那就太好了。

4

2 回答 2

1

我建议使用 PdfWriter.GetImportedPage ...

例如:

'' Create your blank PDF
Dim pdfDoc As Document = New Document(New Rectangle(0, 0, width, height))
Dim pdfWriter As PdfWriter = pdfWriter.GetInstance(pdfDoc, New FileStream("yourPDF.pdf", FileMode.OpenOrCreate))
pdfDoc.Open()

'' Create a reader to read in your PDF 2
Dim bgReader As PdfReader = New PdfReader("pdf2.pdf"))
Dim bg As PdfImportedPage = pdfWriter.GetImportedPage(bgReader, 1)


'' add the template beneath content
pdfWriter.DirectContentUnder.AddTemplate(bg, 0, 0)

'' now do the same for PDF1
bgReader = new PdfReader("pdf1.pdf")
bg = pdfWriter.GetImportedPage(bgReader,1)
pdfWriter.DirectContentUnder.AddTemplate(bg,0,0)

'' don't forget to close the doc which will save it
pdfDoc.Close()

这是几种方法之一..尚未测试代码,但应该不会太远:)

编辑:

看,据我所知,您实际上无法更改 PDF1。您必须创建由 PDF1 和 PDF2 组成的 PDF3。因此,这就是我们实际在做的事情。

您可以做的另一件事是加载构成主要文档基础的文档,然后创建一个您将写入的 PdfStamper。所以假设PDF1是你的主要。

Dim reader as PdfReader = New PdfReader("pathToPDF1")
Dim stamper as new PdfStamper(reader, New FileStream("PathToSaveYourNewPdfTo.pdf"), IO.FileMode.Create)

现在,阅读内容 PDF2

Dim bgReader As PdfReader = New PdfReader("pdf2.pdf"))
Dim bg As PdfImportedPage = pdfWriter.GetImportedPage(bgReader, 1)

如果您想在您的模板下添加此内容,请调用 GetUnderContent。您可以通过在我的代码示例中提供 X 和 Y 坐标“0,0”来定位您想要的位置。请记住,坐标来自 PDF 的左下角。

'' add the template beneath content, 1 indicates pagenumber of the doc you loaded in
stamper.GetUnderContent(1).AddTemplate(bg, 0, 0)

如果要添加到模板的顶部,则调用 GetOverContent 并可以使用相同的定位属性

stamper.GetOverContent(1).AddTemplate(bg, 0, 0)

不确定我是否在您的评论中遗漏了其他内容...?...

于 2012-10-05T19:19:15.333 回答
-2

您可以使用...合并 Pds "ITextSharp"...这是我在最近的项目中尝试过的一个很好的示例...您可以从中获得好主意...

ItextSharp 中的 Pdf 合并问题(合并 Pdf 后不保留其值)

于 2012-10-05T15:25:17.103 回答