Word转PDF的问题 用一般的word转pdf转化工具,都是以虚拟打印机的方式来做的,这样的话word里的超链接在PDF里就无效了,如果用Acrobat Distiller 7.0这个工具转的话word里的超链接是可以转过去,但是这个软件只能一个一个转,我这边需要成批的转。我希望能通过程序的方式来转,转成PDF后,里面的超链接不丢失各位兄弟姐妹,多帮个忙吧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看到这个接受命令行模式吗shell (Acrobat Distiller 7.0 word名 PDF名) 你具体用的是Acrobat Distiller 7.0哪个类?哪个方法? 你以前也做过word转pdf啊我是这样写的 oWord.ApplicationClass word = new Microsoft.Office.Interop.Word.ApplicationClass(); Type wordType = word.GetType(); //打开WORD文档 /*对应脚本中的 var word = new ActiveXObject("Word.Application"); var doc = word.Documents.Open(docfile); */ oWord.Documents docs = word.Documents; Type docsType = docs.GetType(); object objDocName = @"c:\test.doc"; oWord.Document doc = (oWord.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { objDocName, true, true }); //打印输出到指定文件 //你可以使用 doc.PrintOut();方法,次方法调用中的参数设置较繁琐,建议使用 Type.InvokeMember 来调用时可以不用将PrintOut的参数设置全,只设置4个主要参数 Type docType = doc.GetType(); object printFileName = @"c:\test.ps"; docType.InvokeMember("PrintOut", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { false, false, oWord.WdPrintOutRange.wdPrintAllDocument, printFileName }); //new object[]{false,false,oWord.WdPrintOutRange.wdPrintAllDocument,printFileName} //对应脚本中的word.PrintOut(false, false, 0, psfile);的参数 //退出WORD //对应脚本中的word.Quit(); wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null);用的虚拟打印机,这个会丢掉超链接 这会弹出一个打印的窗口,是吧!我用的是PdfMaker,现在正想办法把弹出的窗口去掉呢 但是这个PdfMaker也是用的打印虚拟机来做的啊,会丢失超链接啊 找遍整个网络好像就这两种打印的方法,有个家伙好像写了个什么VBS的脚本,也能转换,但是有BUG.我相信没人敢用,悲哀~~~杯具~~~ 就是你运行Acrobat.exr word名 PDF名看这个软件 支持不支持命令行参数的执行,比如photoshop就支持photoshop.exe 文件这样就可以打开 iTextSharpPDFClown等等之类的你可以去看看 tjficcbw ,打开了了怎么关闭它啊 Adobe Acrobat Professional进行转化 private void button1_Click(object sender, EventArgs e) { string WordStr = @"C:\temp3.docx"; string PdfStr = @"C:\temp3.pdf"; word2PDF(WordStr, PdfStr); MessageBox.Show("OK"); } ApplicationClass MSdoc; object Unknown = Type.Missing; private void word2PDF(object Source, object Target) { //Creating the instance of Word Application if (MSdoc == null) MSdoc = new ApplicationClass(); try { MSdoc.Visible = false; MSdoc.Documents.Open(ref Source, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown); MSdoc.Application.Visible = false; MSdoc.WindowState = Microsoft.Office.Interop.Word.WdWindowState.wdWindowStateMinimize; object format = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF; MSdoc.ActiveDocument.SaveAs(ref Target, ref format, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown); } catch (Exception e) { MessageBox.Show(e.Message); } finally { if (MSdoc != null) { MSdoc.Documents.Close(ref Unknown, ref Unknown, ref Unknown); //WordDoc.Application.Quit(ref Unknown, ref Unknown, ref Unknown); } // for closing the application MSdoc.Quit(ref Unknown, ref Unknown, ref Unknown); } }我也是要做批量的转换,其实我们可以保存路径,然后循环路径,一个个的去转换 不就好了 Json时间格式怎么转换成正常格式?在线等! [急]VS2008开发WinCE,窗体继承后视图设计器打开出错 listview为什么只能选中一整行或者某行中的第一列? winform中contextmenustript如何动态添加子菜单 求一个正则,如何获取HTML代码中某个table中的全部内容 初学者的问题 我想自学p2p网站制作应该买什么书呢 [帮助]有没有了解大连海辉软件公司的,好不好啊? 在windows应用程序中的dataGrid1行变化事件是什么啊?! 是不是有这回事? c#创建excel图表 水晶报表参数问题 十万火急
shell (Acrobat Distiller 7.0 word名 PDF名)
我是这样写的
oWord.ApplicationClass word = new Microsoft.Office.Interop.Word.ApplicationClass();
Type wordType = word.GetType(); //打开WORD文档
/*对应脚本中的
var word = new ActiveXObject("Word.Application");
var doc = word.Documents.Open(docfile);
*/
oWord.Documents docs = word.Documents;
Type docsType = docs.GetType();
object objDocName = @"c:\test.doc";
oWord.Document doc = (oWord.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { objDocName, true, true }); //打印输出到指定文件
//你可以使用 doc.PrintOut();方法,次方法调用中的参数设置较繁琐,建议使用 Type.InvokeMember 来调用时可以不用将PrintOut的参数设置全,只设置4个主要参数
Type docType = doc.GetType();
object printFileName = @"c:\test.ps";
docType.InvokeMember("PrintOut", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { false, false, oWord.WdPrintOutRange.wdPrintAllDocument, printFileName });
//new object[]{false,false,oWord.WdPrintOutRange.wdPrintAllDocument,printFileName}
//对应脚本中的word.PrintOut(false, false, 0, psfile);的参数 //退出WORD
//对应脚本中的word.Quit();
wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null);
用的虚拟打印机,这个会丢掉超链接
我用的是PdfMaker,现在正想办法把弹出的窗口去掉呢
Acrobat.exr word名 PDF名
看这个软件 支持不支持命令行参数的执行,
比如photoshop就支持
photoshop.exe 文件
这样就可以打开
PDFClown
等等之类的你可以去看看
{
string WordStr = @"C:\temp3.docx";
string PdfStr = @"C:\temp3.pdf";
word2PDF(WordStr, PdfStr);
MessageBox.Show("OK");
}
ApplicationClass MSdoc;
object Unknown = Type.Missing;
private void word2PDF(object Source, object Target)
{ //Creating the instance of Word Application
if (MSdoc == null)
MSdoc = new ApplicationClass(); try
{
MSdoc.Visible = false;
MSdoc.Documents.Open(ref Source, ref Unknown,
ref Unknown, ref Unknown, ref Unknown,
ref Unknown, ref Unknown, ref Unknown,
ref Unknown, ref Unknown, ref Unknown,
ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown);
MSdoc.Application.Visible = false;
MSdoc.WindowState = Microsoft.Office.Interop.Word.WdWindowState.wdWindowStateMinimize; object format = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF; MSdoc.ActiveDocument.SaveAs(ref Target, ref format,
ref Unknown, ref Unknown, ref Unknown,
ref Unknown, ref Unknown, ref Unknown,
ref Unknown, ref Unknown, ref Unknown,
ref Unknown, ref Unknown, ref Unknown,
ref Unknown, ref Unknown);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
finally
{
if (MSdoc != null)
{
MSdoc.Documents.Close(ref Unknown, ref Unknown, ref Unknown);
//WordDoc.Application.Quit(ref Unknown, ref Unknown, ref Unknown);
}
// for closing the application
MSdoc.Quit(ref Unknown, ref Unknown, ref Unknown);
}
}
我也是要做批量的转换,其实我们可以保存路径,然后循环路径,一个个的去转换 不就好了