Foxtable(狐表)用户栏目专家坐堂 → Spire.PDF.dll给PDF加印章 缺spire.pdf.graphics.dll有没有变通实现方法呢?


  共有4565人关注过本帖树形打印复制链接

主题:Spire.PDF.dll给PDF加印章 缺spire.pdf.graphics.dll有没有变通实现方法呢?

帅哥哟,离线,有人找我吗?
李孝春
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
Spire.PDF.dll给PDF加印章 缺spire.pdf.graphics.dll有没有变通实现方法呢?  发帖心情 Post By:2020/12/31 13:05:00 [只看该作者]

参照论坛例子http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&replyID=78567&ID=150881&skin=1拟做pdf文件加盖电子印章
遇到如下问题:
1、我下载得到的dll文件如下:

图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看
2.外部引用dll文件如下:【没有论坛例子里面的
spire.pdf.graphics这个文件

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看


执行代码【凡是sG红色部分均报错,有没有办法解决呢?】
Dim pdf As Spire.Pdf.PdfDocument =  New Spire.Pdf.PdfDocument() 
pdf.LoadFromFile("C:\Users\Administrator\Desktop\公文助手20201224\Reports\ 入党申请谈话通知书.pdf")

Dim page As Spire.Pdf.PdfPageBase = pdf.Pages(0)
Dim state As sG.PdfGraphicsState = page.Canvas.Save()

Dim x As Integer = 200
Dim y As Integer = 300
Dim width As Integer = 200
Dim height As Integer = 120

Dim pen As New sG.PdfPen(Color.Black, 1f) 
Dim brush As sG.PdfBrush = New sG.PdfSolidBrush(Color.OrangeRed)
page.Canvas.DrawRectangle(pen, brush, New Rectangle(New Point(x, y), New Size(width, height)))
page.Canvas.Restore(state)

Dim result As String = "C:\Users\Administrator\Desktop\公文助手20201224\Reports\ 入党申请谈话通知书00.pdf"
pdf.SaveToFile(result)

报错如下:

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106063 积分:539408 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/31 14:06:00 [只看该作者]

2、spire.pdf.graphics是一个命名空间,不是一个文件名称

Dim state As spire.pdf.graphics.PdfGraphicsState = page.Canvas.Save()

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)2、spire.pdf.graphics是一个命名空间...  发帖心情 Post By:2020/12/31 14:40:00 [只看该作者]

谢谢老师  按照你指导的命名空间  现在已经实现了在指定的区域和位置画上对应大小的颜色框

如果需要直接插入对应的电子印章图片  下面红色部分代码该怎么操作呢?
Dim pdf As Spire.Pdf.PdfDocument =  New Spire.Pdf.PdfDocument()
pdf.LoadFromFile("C:\Users\Administrator\Desktop\公文助手20201224\Reports\ 胡涛入党申请谈话通知书.pdf")
Dim page As Spire.Pdf.PdfPageBase = pdf.Pages(0)
Dim state As spire.pdf.graphics.PdfGraphicsState = page.Canvas.Save()

Dim loStamp As PdfRubberStampAnnotation = New PdfRubberStampAnnotation(New RectangleF(New PointF(-5, -5), New SizeF(200, 200)))
Dim loApprearance As PdfAppearance = New PdfAppearance(loStamp)
Dim image As PdfImage = PdfImage.FromFile("C:\Users\Administrator\Desktop\dzyz\电子印章\Attachments\电子印章.jpg")
Dim template As PdfTemplate = New PdfTemplate(600, 800)
template.Graphics.DrawImage(image, 0, 0)
loApprearance.Normal = template
loStamp.Appearance = loApprearance
page.AnnotationsWidget.Add(loStamp)
Dim output As String = "C:\Users\Administrator\Desktop\公文助手20201224\Reports\入党申请谈话通知书00.pdf"
doc.SaveToFile(output)
System.Diagnostics.Process.Start("C:\Users\Administrator\Desktop\公文助手20201224\Reports\入党申请谈话通知书00.pdf")
[此贴子已经被作者于2020/12/31 14:40:05编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106063 积分:539408 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/31 15:09:00 [只看该作者]

请花时间研究对方的开发文档。

像2楼那要加上必要的命名空间,如果不知道是哪一个请去看开发文档,或者安装vs查看

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)请花时间研究对方的开发文档。像2楼那...  发帖心情 Post By:2020/12/31 15:13:00 [只看该作者]

还得麻烦老师多多指导了  纯英文的看起头大  谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106063 积分:539408 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/31 15:19:00 [只看该作者]

头再大也是您的工作。我们没有时间和精力替别人家产品做技术支持,只能带进门,细节的东西就要靠自己了

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)头再大也是您的工作。我们没有时间和...  发帖心情 Post By:2020/12/31 16:54:00 [只看该作者]

有点蓝老师  经过学习   
下面的代码基本可以实现在指定的位置加载指定的图片
Dim pdf As Spire.Pdf.PdfDocument =  New Spire.Pdf.PdfDocument()
pdf.LoadFromFile("C:\Users\Administrator\Desktop\公文助手20201224\Reports\ 入党申请谈话通知书.pdf")
Dim page As Spire.Pdf.PdfPageBase = pdf.Pages(0)
Dim image As Image = Image.FromFile("C:\Users\Administrator\Desktop\dzyz\电子印章\Attachments\电子印章.png")
Dim width As Integer = image.Width
Dim height As Integer = image.Height
Dim scale As Single = 0.8F
Dim size As Size = New Size(CInt((width * scale)), CInt((height * scale)))
Dim scaledImage As Bitmap = New Bitmap(image, size)
Dim pdfIma As spire.pdf.graphics.PdfImage = spire.pdf.graphics.PdfImage.FromImage(scaledImage)
Dim x As Single = 360F
Dim y As Single = 550F
page.Canvas.DrawImage(pdfIma, x, y)
pdf.SaveToFile("C:\Users\Administrator\Desktop\公文助手20201224\Reports\ 入党申请谈话通知书11.pdf")
运行效果:

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看


有没有办法去除黑色啊   本来就是png图片  结果加载后一片黑色  影响阅读

在word中图片是正常的  效果如下:

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2020/12/31 16:55:38编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106063 积分:539408 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/31 17:11:00 [只看该作者]

png图片不代表就没有底色。使用ps软件看看去掉背景色。

建议还是研究一下他们的文档,或者百度一下,应该是获取或者生成图片的方式不对

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)png图片不代表就没有底色。使用ps软件...  发帖心情 Post By:2020/12/31 18:58:00 [只看该作者]

有点蓝老师  经过仔细检查png图片 已经是做成了透明化的电子印章图   在word文件中按照你指导的方法vba已经可以成功盖上电子印章图

代码问题没有看出什么不对
然后再网上百度了另外一个写法(可以生成对应的pdf,但是红色部分代码我怎么弄也弄不正确  老师是否可以辛苦下 再指导下呢?相关命名空间我也查询了 没有找到一个完整的一套说明文档  )
Dim pdf As Spire.Pdf.PdfDocument =  New Spire.Pdf.PdfDocument()
pdf.LoadFromFile("C:\Users\Administrator\Desktop\公文助手20201224\Reports\ 胡涛入党申请谈话通知书.pdf")
Dim page As Spire.Pdf.PdfPageBase = pdf.Pages(0)
Dim loStamp As Spire.Pdf.Annotations.PdfRubberStampAnnotation = New Spire.Pdf.Annotations.PdfRubberStampAnnotation(New RectangleF(New PointF(-5, -5), New SizeF(200, 200)))
'Dim loApprearance As Spire.Pdf.Annotations = new Spire.Pdf.Annotations.PdfAppearance(loStamp)
Dim image As Image = Image.FromFile("C:\Users\Administrator\Desktop\dzyz\电子印章\Attachments\电子印章.png")
'Dim template As Spire.Pdf.Annotations.PdfTemplate = New Spire.Pdf.Annotations.PdfTemplate(600, 800)
'page.DrawImage(image, 0, 0)
'loApprearance.Normal = template
'loStamp.Appearance = loApprearance
'page.AnnotationsWidget.Add(loStamp)
Dim output As String = "C:\Users\Administrator\Desktop\公文助手20201224\Reports\ 胡涛入党申请谈话通知书11.pdf"
pdf.SaveToFile(output)

例子代码:
using Spire.Pdf;
using Spire.Pdf.Annotations;
using Spire.Pdf.Annotations.Appearance;
using Spire.Pdf.Graphics;
using System;
using System.Drawing;
  
namespace AddStamp_PDF
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建一个PdfDocument类对象,并加载PDF文档
            PdfDocument doc = new PdfDocument();
            doc.LoadFromFile(@"C:\Users\Administrator\Desktop\test.pdf");
            //获取PDF文档第一页
            PdfPageBase page = doc.Pages[0];
            //新建一个PdfRubberStampAnnotation对象,指定其注释的位置和大小
            PdfRubberStampAnnotation loStamp = new PdfRubberStampAnnotation(new RectangleF(new PointF(-5, -5), new SizeF(200, 200)));
            //实例化一个PdfAppearance对象,并加载作为印章的图片
            PdfAppearance loApprearance = new PdfAppearance(loStamp);
            PdfImage image = PdfImage.FromFile(@"C:\Users\Administrator\Desktop\yz.jpg");
            //新建一个PDF模板,并在模板里绘制图片
            PdfTemplate template = new PdfTemplate(600, 800);
            template.Graphics.DrawImage(image, 0, 0);
            loApprearance.Normal = template;
            loStamp.Appearance = loApprearance;
            //添加印章到PDF文档
            page.AnnotationsWidget.Add(loStamp);
            //保存并打开文档
            string output = "ImageStamp.pdf";
            doc.SaveToFile(output);
            System.Diagnostics.Process.Start("ImageStamp.pdf");
        }
    }
}

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106063 积分:539408 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/31 20:20:00 [只看该作者]

Dim loApprearance As new Spire.Pdf.Annotations.Appearance.PdfAppearance(loStamp)

Dim template As Spire.Pdf.PdfTemplate(600, 800)

 回到顶部
总数 23 1 2 3 下一页