You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用DinkToPDF生成PDF时JPEG图片被旋转的问题求助

DinkToPDF生成PDF时JPEG图片横向显示问题(浏览器/表单中显示正常)

我在用DinkToPDF生成PDF时碰到个问题:上传的JPEG图片在PDF里是横向渲染的,但在编辑表单的img标签里、直接用浏览器打开存储的JPEG文件时都是正常的纵向。不确定是DinkToPDF本身的问题,还是图片展示/存储方式的问题。

相关代码

PDF展示的HTML代码

@model Report

@{...}

渲染PDF的C#代码

public async Task<ReturnFile> CreatePDF(Report report, Controller controller)
{...}

图片上传处理代码

public async Task CreateReportPhotos(int Id, List<IFormFile> files, Report report)
{...}

更新:我找到一个GitHub线程描述了相同问题,但里面的解决方案都不管用。


可行的排查与解决方向

  1. 处理图片EXIF方向信息
    大部分JPEG图片携带的EXIF方向标记,浏览器能自动识别并旋转显示,但wkhtmltopdf(DinkToPDF的底层依赖)对这个标记的解析存在问题。可以在上传阶段就修正图片的实际像素方向,同时移除或重置EXIF方向标签。
    用ImageSharp库处理示例:
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;

public async Task ProcessUploadedImage(IFormFile file)
{
    using var image = Image.Load(file.OpenReadStream());
    // 自动根据EXIF信息旋转图片,并清除方向标记
    image.Mutate(x => x.AutoOrient());
    // 保存处理后的图片到存储位置
    await image.SaveAsync("处理后的图片路径");
}
  1. 在HTML中强制指定图片尺寸
    生成PDF的HTML里,给img标签明确设置width、height属性,或者用CSS固定尺寸,避免wkhtmltopdf自动推断图片方向:
<img src="@Model.PhotoUrl" width="600" height="800" style="object-fit: contain;"/>
  1. 升级DinkToPDF依赖的wkhtmltopdf版本
    如果当前使用的是旧版DinkToPDF,对应的wkhtmltopdf版本可能存在已知bug,尝试升级到最新稳定版,看是否修复了方向解析问题。

  2. 临时转换图片格式
    将JPEG转换为PNG格式后再用于生成PDF,PNG不支持EXIF方向标记,能绕过wkhtmltopdf的解析问题。


内容的提问来源于stack exchange,提问作者BoMerican

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 01:41:02