> 백엔드 개발 > C++ > 효율적이고 저렴하게 프로그래밍 방식으로 Word 파일을 PDF로 변환하는 방법은 무엇입니까?

효율적이고 저렴하게 프로그래밍 방식으로 Word 파일을 PDF로 변환하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2025-01-26 13:41:14
원래의
545명이 탐색했습니다.

How to Programmatically Convert Word Files to PDFs Efficiently and Inexpensively?

Word 파일을 프로그래밍 방식으로 PDF로 변환: 효율적이고 경제적인 방법

도전

Word(.doc) 파일을 PDF 형식으로 변환하는 것은 많은 응용 프로그램에서 일반적으로 필요합니다. 그러나 깨끗하고 비용 효율적인 프로그래밍 솔루션을 찾는 것은 어려울 수 있습니다. 오픈 소스 옵션에는 SDK가 부족한 경우가 많고 독점 솔루션의 가격은 비싼 경우가 많습니다.

솔루션

이 문제를 해결하기 위해 다음과 같은 두 가지 프로그래밍 접근 방식이 있습니다.

Foreach 루프 사용

이 솔루션은 for 루프를 사용하여 이전 코드의 문제를 해결합니다. 이 문제는 아래와 같이 foreach 루프 구현 코드를 사용하여 해결할 수 있습니다.

<code class="language-csharp">int j = 0;
foreach (Microsoft.Office.Interop.Word.Page p in pane.Pages)
{
    var bits = p.EnhMetaFileBits;
    var target = path1 + j.ToString() + "_image.doc";
    try
    {
        using (var ms = new MemoryStream((byte[])(bits)))
        {
            var image = System.Drawing.Image.FromStream(ms);
            var pngTarget = Path.ChangeExtension(target, "png");
            image.Save(pngTarget, System.Drawing.Imaging.ImageFormat.Png);
        }
    }
    catch (System.Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
    j++;
}</code>
로그인 후 복사

Microsoft Word Interop 사용

이 솔루션은 Microsoft Word Interop을 활용하여 변환을 수행합니다.

<code class="language-csharp">using Microsoft.Office.Interop.Word;
using System;
using System.IO;

// ...其他using语句...

// 创建新的Microsoft Word应用程序对象
Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();

// C#没有可选参数,所以我们需要一个虚拟值
object oMissing = System.Reflection.Missing.Value;

// 获取指定目录中Word文件的列表
DirectoryInfo dirInfo = new DirectoryInfo(@"\server\folder");
FileInfo[] wordFiles = dirInfo.GetFiles("*.doc");

word.Visible = false;
word.ScreenUpdating = false;

foreach (FileInfo wordFile in wordFiles)
{
    // 转换为Object类型以用于word Open方法
    Object filename = (Object)wordFile.FullName;

    // 使用虚拟值作为可选参数的占位符
    Document doc = word.Documents.Open(ref filename, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing);
    doc.Activate();

    object outputFileName = wordFile.FullName.Replace(".doc", ".pdf");
    object fileFormat = WdSaveFormat.wdFormatPDF;

    // 将文档保存为PDF格式
    doc.SaveAs(ref outputFileName,
        ref fileFormat, ref oMissing, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing);

    // 关闭Word文档,但保持Word应用程序打开。
    // doc必须转换为_Document类型,以便找到正确的Close方法。
    object saveChanges = WdSaveOptions.wdDoNotSaveChanges;
    ((_Document)doc).Close(ref saveChanges, ref oMissing, ref oMissing);
    doc = null;
}

// word必须转换为_Application类型,以便找到正确的Quit方法。
((_Application)word).Quit(ref oMissing, ref oMissing, ref oMissing);
word = null;</code>
로그인 후 복사

위 내용은 효율적이고 저렴하게 프로그래밍 방식으로 Word 파일을 PDF로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿