Spire.pdf Pdf添加图片,无水印,10页以上未测试,但是10以内是可以的
浪费了很多时间,终于解决了
引了两个dll
用了这个,只有第一页会出现那个警告框
下载dll的链接
https://pan.baidu.com/s/10BQG9tGgjyfjfPB-gCNTUA
提取码
rxy7
这块代码是可以把第一页的警告框去掉的
我是在pdf上最后一页添加图片的,所以我就
doc.Pages.Add();
PdfPageBase lastPage = doc.Pages[doc.Pages.Count-2];
doc.Pages.Remove(doc.Pages[doc.Pages.Count - 1]);
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Spire.Pdf;
using Spire.License;
using System.IO;
using Spire.Pdf.Annotations;
using Spire.Pdf.Graphics;
using System.Drawing;
using Spire.Pdf.Annotations.Appearance;
namespace pdfToWord
{
class Program
{
public Stream merge(string pdf, byte[] imgeByte)
{
try
{
byte[] bt = Convert.FromBase64String(pdf);
//FileContentResult pdf_tmp = (FileContentResult)pdf;
byte[] pdfByte = bt;
//合成
//首先新建一个PDF文档对象并加载要添加印章的文档。
PdfDocument doc = new PdfDocument();
MemoryStream ms1 = new MemoryStream(pdfByte);
doc.LoadFromStream(ms1);
//获取文档的最后一页。
doc.Pages.Add();
PdfPageBase lastPage = doc.Pages[doc.Pages.Count-2];
PdfPageBase page = lastPage;
//新建一个PdfRubberStampAnnotation对象,指定其注释的范围和大小。
PdfRubberStampAnnotation loStamp = new PdfRubberStampAnnotation(new RectangleF(lastPage.ActualSize.Width - 150, lastPage.ActualSize.Height - 100, 200, 200));
//实例化一个PdfAppearance对象。
PdfAppearance loApprearance = new PdfAppearance(loStamp);
//MemoryStream ms2 = new MemoryStream(imgeByte);
//PdfImage image = PdfImage.FromStream(ms2);
PdfImage image = PdfImage.FromFile(@"E:\template6\8.jpg");
//新建一个PDF模板,并在模板里绘制图片。
PdfTemplate template = new PdfTemplate(2000, 2000);
template.Graphics.DrawImage(image, 100, 100);
loApprearance.Normal = template;
loStamp.Appearance = loApprearance;
page.AnnotationsWidget.Add(loStamp);
//保存操作
doc.Pages.Remove(doc.Pages[doc.Pages.Count - 1]);
doc.SaveToFile(@"E:\template7\sample.pdf");
PdfPageBase firstPage = doc.Pages[0];
return doc.SaveToStream(FileFormat.PDF)[0];
}
catch (Exception ex)
{
MemoryStream ms2 = new MemoryStream();
return ms2;
}
}
static void Main(string[] args)
{
string pdf = Convert.ToBase64String(File.ReadAllBytes(@"E:\template7\320382104122JC00046.pdf"));
byte[] imgByte = File.ReadAllBytes(@"E:\template6\test1.jpg");
Program p = new Program();
Stream s = p.merge(pdf, imgByte);
Console.WriteLine("转换成功");
}
}
}
图片展示
我这块最开始直接下载的最新的Spire.pdf,每一页都有警告框
在CSDN上花了50积分,结果报错,我框架是.netframework 4.6.1,那个好像是4.0的,
dll网上找的,代码也是网上找的,哈哈要是有小伙伴刚好也是pdf加图片啥的,页数少于10页,无水印,可以看看。