【发布时间】:2012-11-03 15:08:26
【问题描述】:
我只需要调整 pdf 文件中页面内容的大小,这与减小文件大小无关我只需要减少每个页面内容,即一个图像,以便能够以横向模式将其打印为小册子。 所以我需要减少每个页面内容的高度和宽度。
我在 c# 中使用 iTextSharp
【问题讨论】:
-
pdf查看器缩小pdf的机制还不够?
标签: c#-4.0 pdf itextsharp
我只需要调整 pdf 文件中页面内容的大小,这与减小文件大小无关我只需要减少每个页面内容,即一个图像,以便能够以横向模式将其打印为小册子。 所以我需要减少每个页面内容的高度和宽度。
我在 c# 中使用 iTextSharp
【问题讨论】:
标签: c#-4.0 pdf itextsharp
最简单的方法可能是更改相关页面的默认用户空间单位的大小。
默认用户空间单位可以使用页面字典条目/UserUnit在每页的基础上进行配置,参见。 PDF规范中的表30ISO 32000-1:2008:
UserUnit number (可选;PDF 1.6) 一个正数,表示默认用户空间单位的大小,单位为 1⁄72 英寸的倍数。 支持值的范围应取决于实现。
默认值:1.0(用户空间单位为 1⁄72 英寸)。
因此,您所要做的就是为 PDF 文件的 PdfReader 创建一个 PdfStamper,遍历页面字典,读取它们当前的 /UserUnit 值(默认值:1.0),将其缩减为需要,将其写回,将页面字典标记为已更改,并写入 PdfStamper 的结果。
【讨论】:
尝试将您的内容添加到文档中,并使用 SetPageSize 属性将文档页面设置为横向。
以下是将页面设置为横向的代码:
文档 document = new Document();
document.SetPageSize(iTextSharp.text.PageSize.A4.Rotate());
//添加一些内容
PdfPTable 表 = 新 PdfPTable(1);
PdfPCell cell = new PdfPCell(new Phrase("Some test text"));
cell.HorizontalAlignment = 1; //0=左,1=中,2=右
table.AddCell(cell);
【讨论】: