如何检查PDF中的页面是否为A4

时间:2013-01-15 05:39:20

标签: c# .net itextsharp

我正在创建一个小应用程序,在其中打开现有PDF,然后检查各个页面是否在A4中。如果页面不在A4中,则将它们转换为A4。

我现在面临两个问题:

  1. 如何检查PDF中的页面是否在A4中?
  2. 在将非A4页面转换为A4期间,省略A4页面框架外的文本。因此会导致内容丢失。
  3. 我如何解决这两个问题?

2 个答案:

答案 0 :(得分:1)

使用PdfReader类加载文件。

 PdfReader reader = new PdfReader("path to your file");
 Rectangle rect = reader.GetPageSizeWithRotation(i); // i page number, index starts at 1
 for (int i = 1; i <= reader.NumberOfPages; i++)
 {
      Rectangle rect = reader.GetPageSizeWithRotation(i);
      var a = rect.Width;
      var b = rect.Height;
 }
A4肖像格式变量的

应为a == 595b == 842。在谈论页面尺寸时,容忍度很小。More information.

我有一个这样的方法:

public static bool CheckFirstPageSizeA4Portret(Document doc)
    {

        var a = doc.PageSize.Width;
        var b = doc.PageSize.Height;
        pageFormat format = PageFormat.GetPageFormat(a, b);
        if (format == pageFormat.A4_Portret)
            return true;
        else
            return false;
    }

pageFormat是静态PageFormat类返回的枚举。 PageFormat课程很长,但很简单,在这里发帖会很傻,差不多有500行。 什么类,它检查给定的维度是否与任何官方A,B或C页面格式相对应,并返回格式名称。

对于第二个问题,看看here.那里是java代码,但我认为你应该明白这一点。

答案 1 :(得分:0)

@masius在他的回答中已经指出如何使用GetPageSizeWithRotation方法检索页面的尺寸。

但是,请注意,该方法返回的维度实际上可能会被页面词典的 / UserUnit 条目缩放。 GetPageSizeWithRotation返回的尺寸在 / UserUnit 值中指定为1/72英寸,该值默认为1.0。

在问题“iText:成功调整一页pdf,但是当pdf文档中存在多个页面时失败”@myius所指的解决方案中提出的解决方案有点不理想,因为它删除了所有交互功能(Acroform字段和其他注释)。

我建议将页面媒体框扩展为A4格式的宽高比,然后使用 / UserUnit 页面词典条目缩放页面。