注册 登录
编程论坛 VFP论坛

关于itext直接创建pdf文件

radiofan 发布于 2020-11-16 09:10, 4045 次点击
原来一直使用9.0报表直接生成图片的方式创建文档,对代码直接创建pdf文档一片空白,哪位大侠对itext(abcpdf收费,itext免费)生成pdf有研究,请提供个VFP的简单示例,看看如何入门,谢谢!

[此贴子已经被作者于2020-11-16 13:39编辑过]

28 回复
#2
厨师王德榜2020-11-16 09:46
没用过,以前我的办法是安装一个虚拟打印机,在报表打印的时候,打印到虚拟打印机,这样就自动生成了PDF.
#3
吹水佬2020-11-16 10:34
itextsharp加入VFP的OLE控件使用可以吗
#4
radiofan2020-11-16 12:30
以下是引用吹水佬在2020-11-16 10:34:12的发言:

itextsharp加入VFP的OLE控件使用可以吗


没明白?
#5
radiofan2020-11-16 12:31
回复 2楼 厨师王德榜
不要用虚拟打印。
#6
radiofan2020-11-16 16:53
itextsharp.dll(4.0.8.0)完整示例
2008-05-14 21:54
        private void button1_Click(object sender, EventArgs e)
        {
            //Document:(文档)生成pdf必备的一个对象,生成一个Document示例
            Document document = new Document(PageSize.A4, 30, 30, 5, 5);
            //为该Document创建一个Writer实例:
            PdfWriter.GetInstance(document, new FileStream("Chap0101.pdf", FileMode.Create));
            //打开当前Document
            document.Open();

            //为当前Document添加内容:
             document.Add(new Paragraph("Hello World"));         
            //另起一行。有几种办法建立一个段落,如:
            Paragraph p1 = new Paragraph(new Chunk("This is my first paragraph.\n", FontFactory.GetFont(FontFactory.HELVETICA, 12)));
            Paragraph p2 = new Paragraph(new Phrase("This is my second paragraph.", FontFactory.GetFont(FontFactory.HELVETICA, 12)));
            Paragraph p3 = new Paragraph("This is my third paragraph.", FontFactory.GetFont(FontFactory.HELVETICA, 12));
            //所有有些对象将被添加到段落中:
            p1.Add("you can add string here\n\t");
            p1.Add(new Chunk("you can add chunks \n")); p1.Add(new Phrase("or you can add phrases.\n"));
            document.Add(p1); document.Add(p2); document.Add(p3);

            //创建了一个内容为“hello World”、红色、斜体、COURIER字体、尺寸20的一个块:
            Chunk chunk = new Chunk("Hello world", FontFactory.GetFont(FontFactory.COURIER, 20, iTextSharp.text.Font.COURIER, new iTextSharp.text.Color(255, 0, 0)));

………………
#7
radiofan2020-11-16 20:55
回复 3楼 吹水佬
能否给个示例,谢谢!
#8
吹水佬2020-11-17 19:31
给个itextsharp.dll文件看看
#9
radiofan2020-11-17 20:20
回复 8楼 吹水佬
只有本站会员才能查看附件,请 登录
谢谢吹老师!
#10
吹水佬2020-11-17 21:51
回复 9楼 radiofan
这东东没用过,看似是 .NET 的东西
只有本站会员才能查看附件,请 登录
#11
吹水佬2020-11-17 22:40
有无完整的itextsharp系统安装文件
#12
radiofan2020-11-18 14:30
以下是引用吹水佬在2020-11-17 21:51:12的发言:

这东东没用过,看似是 .NET 的东西


C++可以用
#13
吹水佬2020-11-18 15:22
回复 12楼 radiofan
用C++开发的,但看到的只有Java版、C#版?
#14
吹水佬2020-11-18 15:36
试了一下用RegAsm.exe注册类提示是成功,但VFP好像用不了这类型,在注册表也查找不到相关数据记录。
只有本站会员才能查看附件,请 登录
#15
radiofan2020-11-18 21:21
以下是引用吹水佬在2020-11-18 15:36:08的发言:

试了一下用RegAsm.exe注册类提示是成功,但VFP好像用不了这类型,在注册表也查找不到相关数据记录。

我就是不太喜欢需要注册的东西,能set library 或 createobject 最方便。可惜支持vfp的太少,需要版主们努力啊
#16
radiofan2020-11-18 21:23
回复 14楼 吹水佬
这个需求主要是解决电子合同平台需要pdf文件,现在打算用图片文件解决,谢谢吹版主!
#17
radiofan2020-11-18 21:31
回复 14楼 吹水佬
之前用word生成文档,然后打印成图片,后来在版主的帮助下用报表直接生成图片文档,非常好用。所以,能vfp自己解决的就自己解决,实在不行再想别法。感谢!

[此贴子已经被作者于2020-11-18 21:32编辑过]

#18
吹水佬2020-11-18 22:10
回复 15楼 radiofan
可惜没有
据说用RegAsm可注册成COM类,VFP应该可以createobject,但还没找着门。
#19
radiofan2020-11-19 07:59
以下是引用吹水佬在2020-11-18 22:10:45的发言:

可惜没有
据说用RegAsm可注册成COM类,VFP应该可以createobject,但还没找着门。


继续努力!
#20
radiofan2020-11-19 16:29
以下是引用吹水佬在2020-11-18 22:10:45的发言:

可惜没有
据说用RegAsm可注册成COM类,VFP应该可以createobject,但还没找着门。


https://www. 刚才也看了,慢慢摸索
#21
吹水佬2020-11-19 16:38
这样试试:(Win10 VFP9)
1、注册
     regasm itextsharp.dll /codebase
   生成注册表文件.reg
     regasm itextsharp.dll /codebase /regfile:itextsharp.reg
   生成库文件.tlb
     regasm itextsharp.dll /tlb:itextsharp.tlb
2、卸载
    regasm itextsharp.dll /codebase /unregister
    regasm itextsharp.dll /tlb /unregister
用VFP的对象浏览器载入库文件itextsharp.tlb查看相关的类:
只有本站会员才能查看附件,请 登录


VFP测试代码:
oDocument = CREATEOBJECT("iTextSharp.text.Document")
MESSAGEBOX(oDocument.ToString)
只有本站会员才能查看附件,请 登录
#22
吹水佬2020-11-19 16:40
用“管理员身份”运行CMD注册
#23
radiofan2020-11-20 16:38
以下是引用吹水佬在2020-11-19 16:40:43的发言:

用“管理员身份”运行CMD注册

有空试试
#24
radiofan2020-11-21 22:16
回复 21楼 吹水佬
没折腾明白。
只有本站会员才能查看附件,请 登录
#25
吹水佬2020-11-21 22:59
回复 24楼 radiofan
目前也只能了解到这些
最好有使用手册,能了解各个类的详细说明
#26
radiofan2020-11-22 08:34
回复 25楼 吹水佬
https://  
https://

正在研究……

[此贴子已经被作者于2020-11-22 20:12编辑过]

#27
radiofan2020-11-23 21:29
 ①建立Document对象的实例。
  Document document = new Document();
  ②建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。
  PDFWriter.getInstance(document, new FileOutputStream(“D:\Helloworld.PDF”));
  ③打开文档。
  document.open();
  ④向文档中添加内容。
  document.add(new Paragraph(“Hello World”));
  ⑤关闭文档。
  document.close();
  通过上面的5个步骤,就能产生一个Helloworld.PDF的文件,文件内容为”Hello World”。

看似简单,还是搞不定
#28
吹水佬2020-11-24 09:41
.NET库的类与通过RegAsm注册为COM服务的类不同,看了一下由RegAsm导出的TLB与REG的类也不一样。
#29
龙华无极2021-12-19 20:58
回复 27楼 radiofan
兄弟,请问生成PDF文件解决了吗?如果解决,可以分享一下方法吗?谢谢
1