求思路,生成复杂PDF

Insmnia 2009-03-17 02:25:34
这段时间要搞PDF制作一个合同。
要求是这样的:
1,合同资料分几百个字段保存在数据库里。(合同不是一整份的一个TEXT字段)。
2,用户点一下生成按钮,合同就会把这些从数据库里取出来的几百的字段转化成一份有格式的PDF合同文档。不能出现别的窗口,就是点一下生成。

我用的是Itextshap这个dll。大家也不用和我发这个dll的使用方法的URL链接。
因为,我也看了这个Itextshap主页的使用说明了,研究半星期了,大致都了解。

我要制作的合同PDF,有表格段、落还有各种字体段落样式。合同的数据保存在数据库里,取出来有几百个字段(合同都是保存字段的,不是一整份的)
而用Itextshap不可能一个字段一个字段作为短句插到PDF的Page上去,这样一份长达20页的合同制作完要很长时间。
所以这个原始的方法不行。(所以不要发那种怎么制作PDF的最简单的那种例子代码)。

得改。要高效率。
我第一个思路是,先几百个字段取出来,按照WORD模板(书签绑定字段)得到合同的WORD文档,然后WORD转PDF。但是我WORD转PDF,不会转。Itextshap的说明上也没提到这点(谁有这个代码请贴)。这个看来很难实现,因为我在网上已经搜了一个早上word转PDF都没找到。只找到个ASP。net调用JS。

大家说怎么做高效。或者说,帮我找找word转PDF的方法。当然我不希望别第三方插件,收钱的Dll等。
...全文
347 42 打赏 收藏 转发到动态 举报
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复
mykelly6 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 41 楼 Insmnia 的回复:]
终于忙完了现在的模块,回到PDF,mykelly6你那个2007装插件方法的效果能让我看看吗或着能QQ聊吗我饿721243523
[/Quote]
装插件的效果?就是下了插件安装一下,应该是多了一些相关的类吧。具体怎么弄看那个网页链接~
我qq154859357,晚上8点以后基本都在线
Insmnia 2009-03-20
  • 打赏
  • 举报
回复
终于忙完了现在的模块,回到PDF,mykelly6你那个2007装插件方法的效果能让我看看吗或着能QQ聊吗我饿721243523
mykelly6 2009-03-19
  • 打赏
  • 举报
回复
[Quote=引用 38 楼 Insmnia 的回复:]
随着PDF跨平台的优势,占据OFFICE。我想这种制作PDF的技术每个人应该都会。

等我把现在的模块写完了,我会一个一个试验代码,直到满意的结果。通过这几天对PDF这种复杂的制作,以及不同类型之间转换的研究,我对这种文档类型的制作有了很大的进步。但是,至今没有解决现在的问题。可能楼上有解决问题的了,我会试一下。

用过这个帖子,我也希望大家通过这个集中讨论相互交换了自己知道的知识。谢谢大家,这个帖子这么多天…
[/Quote]
word,excel用了这么多年,对排版设计很多人都用的出神入化了,所以先生成word也不错啊
我也要学习下怎么用excel了,前面下了教学视频在电脑里都发霉了
mykelly6 2009-03-19
  • 打赏
  • 举报
回复
现在pdf真的很流行阿,微软的xps好像很少被提起~
我看到一个程序能读取若干个pdf,然后生成一本电子书,像平时看书一样浏览,感觉蛮不错的
Insmnia 2009-03-19
  • 打赏
  • 举报
回复
随着PDF跨平台的优势,占据OFFICE。我想这种制作PDF的技术每个人应该都会。

等我把现在的模块写完了,我会一个一个试验代码,直到满意的结果。通过这几天对PDF这种复杂的制作,以及不同类型之间转换的研究,我对这种文档类型的制作有了很大的进步。但是,至今没有解决现在的问题。可能楼上有解决问题的了,我会试一下。

用过这个帖子,我也希望大家通过这个集中讨论相互交换了自己知道的知识。谢谢大家,这个帖子这么多天没沉。也感谢机会关注此贴的人们。

我希望对于1L这个问题,有更好的解决方法。现在似乎都在解决怎么从WORD转PDF。呵呵。看来我原来的思路还不错。
mykelly6 2009-03-18
  • 打赏
  • 举报
回复
虚拟打印的会出现“正在打印第x页“的字样吧基本不影响使用。我用“adobe PDF”来打印好像有问题。

我就把代码里面那个.xps换成了.pdf,不知道是不是哪里还要改,但是原作者没说,只是说“同样,如果系统安装了PDF虚拟打印机,如5D PDF之类的,我们也可以将其设置为默认打印机以达到转换为PDF格式的目的”。

另外那个利用office2007来保存的你可以试试阿
深海之蓝 2009-03-18
  • 打赏
  • 举报
回复
acrobat非常好,可直接转
Insmnia 2009-03-18
  • 打赏
  • 举报
回复
兄弟,你有尝试过用Itext一个一个字段添加排版吗?况且不说后期要是改动合同内容,你就不得不修改原代码。而模板做,是最好的了。只是没有好的转换方法。

zzxap 2009-03-18
  • 打赏
  • 举报
回复
人齐,可以结贴.
Insmnia 2009-03-18
  • 打赏
  • 举报
回复
mykelly6我搜到你也有类似WORD转PDF一个帖子,你用虚拟打印的吧?
解决了没?

我也想弄虚拟打印,但弹出个界面不行。
shrinerain 2009-03-18
  • 打赏
  • 举报
回复
你的问题很奇怪, 用iTextSharp写你觉得太麻烦.
用第三方组件你又不能用.

那你期望怎么办?


mykelly6 2009-03-18
  • 打赏
  • 举报
回复
http://seanli888.blog.51cto.com/345958/112268
这个帖子是利用office2007的一个插件来转的,我只装了2003就没试,可以试下这个啊

直接写pdf估计比较够呛,还要排版呢,你word的都弄好了,感觉还是转一下比较快
Insmnia 2009-03-18
  • 打赏
  • 举报
回复
还有没有别的思路,把这几百个字段搞成PDF啊

解除我加分。我开小号也要加分。(虽然这个大号也是贫农)
Insmnia 2009-03-18
  • 打赏
  • 举报
回复
这个代码是从WPS转PDF啊。。。
还要安装WPS的Application。不行。
Insmnia 2009-03-18
  • 打赏
  • 举报
回复
大部分都要收钱的,很遗憾
wangjt18 2009-03-18
  • 打赏
  • 举报
回复
up
mykelly6 2009-03-18
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 feifeiyiwen 的回复:]
convert2pdf 还可以,不妨试试看
[/Quote]
C#实现的word转PDF程序,需要先安装Acrobat Profession.装这个是要收钱的吧?
feifeiyiwen 2009-03-18
  • 打赏
  • 举报
回复
convert2pdf 还可以,不妨试试看
wonder888888 2009-03-18
  • 打赏
  • 举报
回复
还有个办法用convert2pdf

多给点分,谢谢
wonder888888 2009-03-18
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;

namespace CShapeWpsToPdf
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
object WpsApp;
object[] args = new object[1];
Type wpsAppName;
string progID = "Wps.Application";
wpsAppName = Type.GetTypeFromProgID(progID);

//创建一个WPS实例
WpsApp = Activator.CreateInstance(wpsAppName);
args[0] = true;

//设置为可见
wpsAppName.InvokeMember("Visible", BindingFlags.SetProperty, null, WpsApp, args);

//得到Documents对象
Object wpsDocs = wpsAppName.InvokeMember("Documents", BindingFlags.GetProperty, null, WpsApp, null);
args = new object[15];
args[0] = @"C:\Demo.wps";
args[11] = true;

//打开C盘下的Demo.wps
Object wpsDoc = wpsAppName.InvokeMember("Open", BindingFlags.InvokeMethod, null, wpsDocs, args);
args = new object[3];

//生成PDF
args[0] = @"C:\Demo.pdf";
wpsAppName.InvokeMember("ExportPdf", BindingFlags.InvokeMethod, null, wpsDoc, args);
}
}
}
加载更多回复(22)

110,552

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧