LEADTOOLS ナレッジベース

[Document Imagingファミリー][RasterImageViewer/DocumentViewer] Office文書をLEADTOOLSでサポートしている画像形式に変換できますか?

Microsoft Officeドキュメント形式は、Document Imagingファミリー以上のエディションでサポートしています。(Imaging Proファミリーではサポートしておりませんので直接変換することはできません。)

JPEGやPNGファイル形式を読み込むのと同様に、Word(DOC/DOCX)、Excel(XLS/XLSX)、PowerPoint(PPT/PPTX)形式のページをラスタ画像として読み込むことが可能です。
SVG形式として読み込む場合には、19.0Jで新しく追加されたドキュメントビューワ(Leadtools.Documents.UI.DocumentViewer)をご利用ください。

[RasterImageViewer]
実際の動作は.NETコントロール チュートリアルの「LoadMsOfficeFormat」をご覧ください。

[DocumentViewer]
上記の.NETコントロール チュートリアルの「DocumentViewer」で画像のロード方法をご参考ください。Microsoft Officeドキュメント形式の読み込みに必要な以下のアセンブリファイルをプロジェクトの参照に追加することで読み込みできます。

Leadtools.Codecs.Xls
Leadtools.Codecs.Xlx
Leadtools.Codecs.Doc
Leadtools.Codecs.Dox
Leadtools.Codecs.Ppt
Leadtools.Codecs.Ppx


◆ご注意
上記LEADTOOLSの機能では、一部の図形などが表示されないといった問題があります。
[Document Imagingファミリー] Officeファイルを読み込んだ際に文字や図、オートシェイプなどが表示されない

そのため、他の方法としてLEADTOOLSの機能のみではなく、Microsoft Officeのプライマリ相互運用機能アセンブリ(※)で提供している機能を使用してPDFもしくはXPSファイルに変換し、変換したファイル(PDFもしくはXPS)をLEADTOOLSで読み込んで任意のファイル形式に変換する方法が考えられます。

※使用するプライマリ相互運用機能アセンブリ

  • Microsoft.Office.Interop.Excel
  • Microsoft.Office.Interop.Word
  • Microsoft.Office.Interop.PowerPoint

以下の情報もご参照ください。
Office プライマリ相互運用機能アセンブリ


以下は、ExcelファイルをTIFFファイルに変換するサンプルです。こちらをご参考ください。

サンプルコード(VB.NET)

Imports Microsoft.Office.Interop.Excel
Imports Leadtools
Imports Leadtools.Codecs

Public Class Form1
    Dim excelApplication As New Microsoft.Office.Interop.Excel.Application()
    Dim excelWorkbook As Workbook = Nothing
    Dim paramSourceBookPath As String = "C:\Temp\Test.xlsx"
    Dim paramExportFilePath As String = "C:\Temp\Test.pdf"
    Dim paramExportFormat As XlFixedFormatType = XlFixedFormatType.xlTypePDF
    Dim paramExportQuality As XlFixedFormatQuality = XlFixedFormatQuality.xlQualityStandard
    Dim paramOpenAfterPublish As Boolean = False
    Dim paramIncludeDocProps As Boolean = True
    Dim paramIgnorePrintAreas As Boolean = True
    Dim paramFromPage As Object = Type.Missing
    Dim paramToPage As Object = Type.Missing

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            ' Excelワークブックを開きます。
            excelWorkbook = excelApplication.Workbooks.Open(paramSourceBookPath)

            ' PDFファイルとして保存します。
            If Not excelWorkbook Is Nothing Then
                excelWorkbook.ExportAsFixedFormat(paramExportFormat, _
                    paramExportFilePath, paramExportQuality, _
                    paramIncludeDocProps, paramIgnorePrintAreas, _
                    paramFromPage, paramToPage, paramOpenAfterPublish)
            End If
        Catch ex As Exception
            ' エラーを返します。
        Finally
            ' Excleワークブックを閉じます。
            If Not excelWorkbook Is Nothing Then
                excelWorkbook.Close(False)
                excelWorkbook = Nothing
            End If

            ' Excelを終了し、Applicationオブジェクトを解放します。
            If Not excelApplication Is Nothing Then
                excelApplication.Quit()
                excelApplication = Nothing
            End If

            GC.Collect()
            GC.WaitForPendingFinalizers()
            GC.Collect()
            GC.WaitForPendingFinalizers()
        End Try
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim codecs As New RasterCodecs
        Dim tempimage As RasterImage

        codecs.Options.Pdf.Load.GraphicsAlpha = 4
        codecs.Options.Pdf.Load.TextAlpha = 4
        codecs.Options.Pdf.Load.DisplayDepth = 24

        ' 水平および垂直方向の表示解像度(DPI)を設定します。
        codecs.Options.RasterizeDocument.Load.XResolution = 150
        codecs.Options.RasterizeDocument.Load.YResolution = 150

        ' PDFファイルを読み込みます。
        tempimage = codecs.Load(paramExportFilePath, 24, CodecsLoadByteOrder.Bgr, 1, 1)

        ' TIFF形式で保存します。
        codecs.Save(tempimage, "C:\Temp\Test.tif", RasterImageFormat.Tif, 0)

    End Sub
End Class

サンプルコード(C#)

using Microsoft.Office.Interop.Excel;
using Leadtools;
using Leadtools.Codecs;

public class Form1
{
    Microsoft.Office.Interop.Excel.Application excelApplication = new Microsoft.Office.Interop.Excel.Application();
    Workbook excelWorkbook = null;
    string paramSourceBookPath = @"C:\Temp\Test.xlsx";
    string paramExportFilePath = @"C:\Temp\Test.pdf";
    XlFixedFormatType paramExportFormat = XlFixedFormatType.xlTypePDF;
    XlFixedFormatQuality paramExportQuality = XlFixedFormatQuality.xlQualityStandard;
    bool paramOpenAfterPublish = false;
    bool paramIncludeDocProps = true;
    bool paramIgnorePrintAreas = true;
    object paramFromPage = Type.Missing;
    object paramToPage = Type.Missing;

    private void Button1_Click(object sender, System.EventArgs e)
    {
        try
        {
            // Excelワークブックを開きます。
            excelWorkbook = excelApplication.Workbooks.Open(paramSourceBookPath,
                    Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                    Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                    Type.Missing, Type.Missing, Type.Missing, Type.Missing);
           
            // PDFファイルとして保存します。
            if ((excelWorkbook != null))
            {
                excelWorkbook.ExportAsFixedFormat(paramExportFormat, paramExportFilePath,
                    paramExportQuality, paramIncludeDocProps, paramIgnorePrintAreas,
                    paramFromPage, paramToPage, paramOpenAfterPublish,Type.Missing);
            }
        }
        catch (Exception ex)
        {
            // エラーを返します。
        }
        finally
        {
            // Excleワークブックを閉じます。
            if ((excelWorkbook != null))
            {
                excelWorkbook.Close(false,Type.Missing,Type.Missing);
                excelWorkbook = null;
            }
                       
            // Excelを終了し、ApplicationClassオブジェクトを解放します。
            if ((excelApplication != null))
            {
                excelApplication.Quit();
                excelApplication = null;
            }
           
            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();
            GC.WaitForPendingFinalizers();
        }
    }
   
    private void Button2_Click(object sender, System.EventArgs e)
    {
        RasterCodecs codecs = new RasterCodecs();
        RasterImage tempimage;
       
        codecs.Options.Pdf.Load.GraphicsAlpha = 4;
        codecs.Options.Pdf.Load.TextAlpha = 4;
        codecs.Options.Pdf.Load.DisplayDepth = 24;
       
        // 水平および垂直方向の表示解像度(DPI)を設定します。
        codecs.Options.RasterizeDocument.Load.XResolution = 150;
        codecs.Options.RasterizeDocument.Load.YResolution = 150;
       
        // PDFファイルを読み込みます。       
        tempimage = codecs.Load(paramExportFilePath, 24, CodecsLoadByteOrder.Bgr, 1, 1);
       
        // TIFF形式で保存します。
        codecs.Save(tempimage, @"C:\Temp\Test.tif", RasterImageFormat.Tif, 0);
    }
}

0 コメント

記事コメントは受け付けていません。