我到处寻找这个,但找不到有效的答案。我有 2 个输入 PDF(只有 2 个)。
我想将 PDF2 添加到 PDF1(新页面)的底部,然后将两者都输出为 PDF3。
如果您在 vb.net 中提交任何代码,任何人都可以提供帮助,那就太好了。
我到处寻找这个,但找不到有效的答案。我有 2 个输入 PDF(只有 2 个)。
我想将 PDF2 添加到 PDF1(新页面)的底部,然后将两者都输出为 PDF3。
如果您在 vb.net 中提交任何代码,任何人都可以提供帮助,那就太好了。
我建议使用 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)
不确定我是否在您的评论中遗漏了其他内容...?...
您可以使用...合并 Pds "ITextSharp"
...这是我在最近的项目中尝试过的一个很好的示例...您可以从中获得好主意...