PNG出力について

Excel、Word、Power Point、PDFにて、以下のような変換を行いたいです。
・全ページPNG出力(Excelは印刷設定に従って全ページ出力)
・元ページの縦横比を維持したまま、各ページを1920*1080にぴったりおさまるサイズにリサイズ
・画質はなるべく高品質

バージョンは以下の通りです。
Aspose.Cells:23.4.0
Aspose.PDF:23.4.0
Aspose.Slides.NET:23.4.0
Aspose.Words:23.4.0

C#で上記の変換を行うコードのサンプルをご教示いただけますでしょうか。

@otani

Excel から画像への変換には、次のコードを使用してください。
注: API ImageOrPrintOptions.SetDesiredSize(int desiredWidth, int desiredHeight) は元のページの縦横比を維持できません。 ページの縦横比を維持するために、新しい API ImageOrPrintOptions.SetDesiredSize(int desiredWidth, int desiredHeight, bool keepAspectRatio) を追加します。

ImageOrPrintOptions imgOpt = new ImageOrPrintOptions();
imgOpt.ImageType = ImageType.Png;

//Currently, the method doesn't keep page aspect ratio.
//We will add a new API for it.
//e.g. ImageOrPrintOptions.SetDesiredSize(int desiredWidth, int desiredHeight, bool keepAspectRatio)
imgOpt.SetDesiredSize(1920, 1080);

Workbook wb = new Workbook("Book1.xlsx");
WorkbookRender wr = new WorkbookRender(wb, imgOpt);
for(int i = 0; i < wr.PageCount; i++)
{
    wr.ToImage(i, $"output_{i}.png");
}

そのための新しいチケットをオープンしました。

CELLSNET-53252

@otani,
Aspose.Slides に関しては、次のコード例を使用してください。

const int width = 1920;
const int height = 1080;

using (var presentation = new Presentation("example.pptx"))
{
    // fit content to the image size
    presentation.SlideSize.SetSize(width, height, SlideSizeScaleType.Maximize);

    for (var i = 0; i < presentation.Slides.Count; i++)
    {
        var slide = presentation.Slides[i];

        // render the slide with the desired size
        using (var bitmap = slide.GetThumbnail(new Size(width, height)))
        {
            bitmap.Save($"slide{i + 1}.png", ImageFormat.Png);
        }
    }
}

Documents: Convert Slide, Slide Size
API Reference: SlideSizeScaleType enumeration, ISlide interface

@otani, Aspose.Words では、次のコードで実現できます:

float imageDPI = 600f;
float screenDPI = 72f;
float desiredWidth = 1920f;
float desiredHeight = 1080f;

Document doc = new Document("in.docx");

// Get the page setup of the first section.
PageSetup pageSetup = doc.Sections[0].PageSetup;
// Calculate the final image dimensions.
double imageWidth =  pageSetup.PageWidth * imageDPI / screenDPI;
double imageHeight = pageSetup.PageHeight * imageDPI / screenDPI;

// Calculate the scaling needed to make the final image fit into 1920x1080.
double scale = 1.0;
if (imageHeight > imageWidth)
{
    scale = desiredHeight / imageHeight;
    if (imageWidth * scale > desiredWidth)
        scale = desiredWidth / imageWidth;
} else {
    scale = desiredWidth / imageWidth;
    if (imageHeight * scale > desiredHeight)
        scale = desiredHeight / imageHeight;
}
    

ImageSaveOptions opts = new ImageSaveOptions(SaveFormat.Png)
{
    Resolution = imageDPI,
    Scale = (float)scale,
};

for (int i = 0; i < doc.PageCount; i++)
{
    opts.PageSet = new PageSet(i);
    doc.Save($"out.page.{i}.png", opts);
}

詳細については、ドキュメントを参照してください:

@otani,

お客様の問題 (CELLSNET-53252 - ワークブックを画像に変換する際に画像の目的のサイズを設定し、縦横比を維持する) が解決されたことをお知らせいたします。 この修正は、2023 年 5 月前半にリリース予定の Aspose.Cells v23.5 に含まれる予定です。次のバージョンがリリースされると通知されます。

@otani

PDF ページを PNG に変換するには、こちら の記事。

画像サイズとアスペクト比に関連する主な要件については、以下のように調査チケットが問題追跡に記録されています。 Free Support Policies に記載されている条件に従って修正を提供します。

問題 ID: PDFNET-54493

優先的にサポートが必要な場合は、Paid Support Services を取得できます。また、有料サポート管理チームに直接アクセスすることもできます。

The issues you have found earlier (filed as CELLSNET-53252) have been fixed in this update. This message was posted using Bugs notification tool by johnson.shi