1

docxドキュメントをPdfに変換するタスクがあります。私はこのアプローチを取ることにしました:docxをhtmlに変換してから、htmlをItextSharpに渡します。エリックホワイトのブログを見つけるまで、数週間、グーグル、コードプレックス、ソースフォージ、スタックオーバーフローなど、この変換を行うための解決策を探していました。最初の印象で、彼はOpenXmlドキュメントを操作するための優れたツールを作成しました。しかし、それをテストしようとすると、null参照に関するエラーが発生しました。ヘッダー(RevisionAccepterクラス)の読み取り中にエラーが発生します

 public static void AcceptRevisions(WordprocessingDocument doc)
    {
        AcceptRevisionsForPart(doc.MainDocumentPart);
        foreach (var part in doc.MainDocumentPart.HeaderParts) //part is null
            AcceptRevisionsForPart(part); //null ref exception here
        foreach (var part in doc.MainDocumentPart.FooterParts)
            AcceptRevisionsForPart(part);
        if (doc.MainDocumentPart.EndnotesPart != null)
            AcceptRevisionsForPart(doc.MainDocumentPart.EndnotesPart);
        if (doc.MainDocumentPart.FootnotesPart != null)
            AcceptRevisionsForPart(doc.MainDocumentPart.FootnotesPart);
    }

変換に使用するコード(例と同じ)

private void conv()
    {
        byte[] byteArray = File.ReadAllBytes(textBox1.Text);
        using (MemoryStream memoryStream = new MemoryStream())
        {                

            memoryStream.Write(byteArray, 0, byteArray.Length);
            using (WordprocessingDocument doc =
                WordprocessingDocument.Open(memoryStream, true))
            {
                HtmlConverterSettings settings = new HtmlConverterSettings()
                {
                    PageTitle = "My Page Title"

                };
                XElement html = HtmlConverter.ConvertToHtml(doc, settings);

                File.WriteAllText("Test.html", html.ToStringNewLineOnAttributes());
            }
        }
    }

nameSpaces:

using System.Xml;
using System.Xml.Xsl;
using OpenXmlPowerTools;
using System.Xml.Linq;
using DocumentFormat.OpenXml.Packaging;

ヘッダー付きで、同じ場所でエラーが発生することなく、word2010で作成されたドキュメントを渡そうとしました。たぶん、私はドキュメントを間違って渡しているか、ドキュメント自体で何かを渡しているのかもしれません。

たぶん、Aposeのような商用コンポーネントを使用せずにdocxをpdfに変換する別の方法があります。

4

1 に答える 1

1

問題が見つかりました。動力工具プロジェクトとメインプロジェクトの参照が異なるため、エラーが発生していました。私のプロジェクトのDocumentFormat.OpenXmlバージョンは2.5.5513.0で、動力工具では2.0.5022.0でした。同じリソースを参照した後、すべてがうまくいきました。

于 2012-09-26T05:57:31.500 に答える