在 C# 中使用 iTextSharp 将 PDF 旋转 90 度

问题描述 投票:0回答:3

我正在尝试使用 PDF 进行盖章,需要将其旋转 90 度才能正确放置?有人知道怎么做吗?网上好像找不到。

c# pdf itext
3个回答
12
投票

Rotate90Degrees 示例使用

PdfReader
获取文档的实例,然后更改每个页面字典中的
/Rotate
值。如果没有这样的条目,则会添加值为
/Rotate
90
条目:

final PdfReader reader = new PdfReader(source);
final int pagesCount = reader.getNumberOfPages();

for (int n = 1; n <= pagesCount; n++) {
    final PdfDictionary page = reader.getPageN(n);
    final PdfNumber rotate = page.getAsNumber(PdfName.ROTATE);
    final int rotation =
            rotate == null ? 90 : (rotate.intValue() + 90) % 360;

    page.put(PdfName.ROTATE, new PdfNumber(rotation));
}

完成后,我们使用

PdfStamper
来保存更改:

PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
stamper.close();
reader.close();

这是针对 iText Java 的。对于 iTextSharp,将 Java 移植到 C# 很容易,因为术语是相同的。将一些小写字母更改为大写字母,如下所示:

PdfDictionary page = reader.GetPageN(1);
page.Put(PdfName.ROTATE, new PdfNumber(90));

本文的问题部分有一个或多或少相同的代码片段:如何使用 iTextSharp 旋转 PDF 页面而不导致 Ghostscript 错误?


1
投票

对于 C# 程序员:

我用 C# 代码替换了 Bruno 的答案:

是的,它的工作就像一个魅力,你也可以将旋转数更改为 180,270 等

            PdfReader reader = new PdfReader("Source.pdf");
            int pagesCount = reader.NumberOfPages;
            PdfDictionary page = reader.GetPageN(1);
            PdfNumber rotate = page.GetAsNumber(PdfName.ROTATE);
            page.Put(PdfName.ROTATE, new PdfNumber(90));
            FileStream fs = new FileStream("created.pdf", FileMode.Create, 
            FileAccess.Write, FileShare.None);
            PdfStamper stamper = new PdfStamper(reader, fs);

0
投票

基于此页面https://blog.fileformat.com/pdf/rotate-pdf-in-csharp-using-itextpdf/

 using var ms = new MemoryStream();
 await using var pdfWriter = new PdfWriter(ms);

 using var pdfms = new MemoryStream(blobFile.Content);
 var document = new PdfDocument(new PdfReader(pdfms), pdfWriter);

 for (int i = 1; i <= document.GetNumberOfPages(); i++)
 {
     var page = document.GetPage(i);
     int rotate = page.GetRotation();
     if (rotate == 0)
     {
         page.SetRotation(90);
     }
     else
     {
         page.SetRotation((rotate + 90) % 360);
     }
 }

 document.Close();
 pdfms.Close();

 var pdfContent = ms.ToArray();

 return pdfContent;
© www.soinside.com 2019 - 2024. All rights reserved.