C#。文档转换为PDF

时间:2010-05-20 09:10:47

标签: c# asp.net-mvc vb.net pdf

我需要使用C#/ VB.Net将下面提到的文件格式转换为pdf。用户将使用FileUpload控件上传文件,系统将在转换文档后返回pdf文件。

doc / docx to pdf xls / xlsx到pdf ppt / pps to pdf

ITextSharp是否提供此类设施?请仅提及开源或免费库。

由于

4 个答案:

答案 0 :(得分:1)

我从未见过任何免费图书馆将办公室文档转换为pdf。但是,有免费的PDF打印机驱动程序,如PDFCreator http://sourceforge.net/projects/pdfcreator/files/,因此您可以安装其中一个,然后让您的应用程序自动将文档打印到其中一个pdf打印机。

如果它只是一个小型的内部网站或类似网站,那么它可能是一种可能的解决方案。

答案 1 :(得分:1)

我只对Word格式做了同样的事情。我使用Microsoft.Office.Interop.Word

代码下方。

public static void Word2PDF(string fileName)
{
    ApplicationClass wordApplication = new ApplicationClass();
    Document wordDocument = null;
    object paramSourceDocPath = fileName + @".doc";
    object paramMissing = Type.Missing;
    string paramExportFilePath = fileName + @".pdf";
    WdExportFormat paramExportFormat = WdExportFormat.wdExportFormatPDF;
    bool paramOpenAfterExport = false;

    WdExportOptimizeFor paramExportOptimizeFor =WdExportOptimizeFor.wdExportOptimizeForPrint;

    WdExportRange paramExportRange = WdExportRange.wdExportAllDocument;
    int paramStartPage = 0;

    int paramEndPage = 0;
    WdExportItem paramExportItem = WdExportItem.wdExportDocumentContent;

    bool paramIncludeDocProps = true;
    bool paramKeepIRM = true;

    WdExportCreateBookmarks paramCreateBookmarks =
    WdExportCreateBookmarks.wdExportCreateWordBookmarks;

    bool paramDocStructureTags = true;
    bool paramBitmapMissingFonts = true;

    bool paramUseISO19005_1 = false;

    try
    {
        // Open the source document.
        wordDocument = wordApplication.Documents.Open(
        ref paramSourceDocPath, ref paramMissing, ref paramMissing,
        ref paramMissing, ref paramMissing, ref paramMissing,
        ref paramMissing, ref paramMissing, ref paramMissing,
        ref paramMissing, ref paramMissing, ref paramMissing,
        ref paramMissing, ref paramMissing, ref paramMissing,
        ref paramMissing);

        // Export it in the specified format.
        if (wordDocument != null)
            wordDocument.ExportAsFixedFormat(paramExportFilePath,
            paramExportFormat, paramOpenAfterExport,
            paramExportOptimizeFor, paramExportRange, paramStartPage,
            paramEndPage, paramExportItem, paramIncludeDocProps,
            paramKeepIRM, paramCreateBookmarks, paramDocStructureTags,
            paramBitmapMissingFonts, paramUseISO19005_1,
            ref paramMissing);
    }
    catch (Exception ex)
    {

        // Respond to the error
    }
    finally
    {
        // Close and release the Document object.
        if (wordDocument != null)
        {
            wordDocument.Close(ref paramMissing, ref paramMissing,
            ref paramMissing);
            wordDocument = null;
        }
        // Quit Word and release the ApplicationClass object.
        if (wordApplication != null)
        {
            wordApplication.Quit(ref paramMissing, ref paramMissing,
            ref paramMissing);
            wordApplication = null;
        }
        GC.Collect();
        GC.WaitForPendingFinalizers();
        GC.Collect();
        GC.WaitForPendingFinalizers();
    }
}

希望这会有所帮助。

注意:我使用的是版本12,表示2007年的办公室。

答案 2 :(得分:0)

我不知道任何免费的图书馆,因为这是一个非常复杂的领域。有些商业版可用,但在转换文件时通常缺乏保真度。

我曾经使用Web Services based PDF Converter,效果很好,但不是免费的。

答案 3 :(得分:0)

有许多处理PDF的开源库。但是我不确定是否会在格式之间为您进行转换。

您可能需要两个库。一个用于读取DOC / DOCX,另一个用于写入PDF。阅读DOC / DOCX实际上可能是更困难的部分,至少在没有安装Microsoft Word的情况下。如果您有Word,那么您可以访问COM接口来操作Word文档,但显然您必须为Word付费。

维基百科列出了许多库,开源和商业,包括你提到的iTextSharp。

http://en.wikipedia.org/wiki/List_of_PDF_software

鉴于OpenOffice是开源的,可能值得研究他们如何做,因为他们可以阅读DOC(和DOCX?)并写出PDF。

或者,您可以查看PDF打印机解决方案。同样,我不确定开源/免费解决方案,但如果有,你基本上只需从C#打印到特殊的PDF打印机,它就会转换为PDF文件。有些产品还可以让您将文件转储到文件夹中并进行转换。

我使用过Adobe Distiller(Acrobat的一部分)和ActivePDF,但这些都是商业解决方案。 ActivePDF确实提供了一个库。

还有CutePDF声称自由。没试过,也不确定他们的专业版有什么限制。