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

如何使用iText7实现PDF文件的「真正」旋转(保持Rotation=0)

PDF顺时针旋转并保留页面边界(保持Rotation=0)的最优方案

我需要将PDF文件顺时针旋转,同时保留旋转后的页面边界。官方提供的示例代码仅为每页设置旋转属性,无法实现旋转后页面Rotation值为0的需求,官方示例代码如下:

PdfDocument pdfDoc = new PdfDocument(new PdfReader(SRC), new PdfWriter(dest));
for (int p = 1; p <= pdfDoc.GetNumberOfPages(); p++) 
{
    PdfPage page = pdfDoc.GetPage(p);
    int rotate = page.GetRotation();
    if (rotate == 0) {
        page.SetRotation(90);
    }
    else 
    {
        page.SetRotation((rotate + 90) % 360);
    }
}
pdfDoc.Close();

我自行编写了一段代码处理某源文件时,成功得到了预期结果,代码如下:

string src = @"-x-y_28P_src.pdf";
string targetFPath = @"-x-y_28P_real_rotated.pdf";
using (PdfDocument pdfDoc = new PdfDocument(new PdfWriter(targetFPath)))
using (PdfDocument origPdf = new PdfDocument(new PdfReader(src)))
{
    pdfDoc.GetWriter().SetSmartMode(true);
    int pageCount = origPdf.GetNumberOfPages();
    for (int i = 1; i <= pageCount; i++)
    {
        PdfPage origPage = origPdf.GetPage(i);
        var pageCopy = origPage.CopyAsFormXObject(pdfDoc);
        var mediaBox = origPage.GetMediaBox();//x = -8.5,y=-8.5
        var cropBox = origPage.GetCropBox();
        var trimBox = origPage.GetTrimBox();
        var mediaRect90 = new Rectangle(0, 0, mediaBox.GetHeight(), mediaBox.GetWidth());//media:0,0,h,w,data from pdfinfo of xpdf.
        var page = pdfDoc.AddNewPage(new PageSize(mediaRect90));//media:0,0,h,w
        var canvas = new PdfCanvas(page);
        canvas.AddXObject(pageCopy, 0, -1, 1, 0, 0 - mediaBox.GetBottom(), mediaBox.GetRight());//Clockwise

        var cropbox = new Rectangle(0, 0, cropBox.GetHeight(), cropBox.GetWidth());
        page.SetCropBox(cropbox);
        var trimbox = new Rectangle(-mediaBox.GetBottom(), -mediaBox.GetLeft(), trimBox.GetHeight(), trimBox.GetWidth());
        page.SetTrimBox(trimbox);//important
    }
}

但这段代码处理另一文件时,无论如何调整都无法得到正确结果,且当前实现方案逻辑复杂,请问是否有更简洁、通用的解决方法?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 22:05:58