我正在创建一个小应用程序,在其中打开现有PDF,然后检查各个页面是否在A4中。如果页面不在A4中,则将它们转换为A4。
我现在面临两个问题:
我如何解决这两个问题?
答案 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 == 595
,b == 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 页面词典条目缩放页面。