我需要将单页PDF的大小从8X11英寸调整为8X9英寸(或任何大小),而根本不调整内容的大小。
如何在C#中执行此操作?
谢谢
这应该可以使用任何体面的通用PDF库。
例如,使用iText 7从右侧裁剪1英寸:
using (PdfReader reader = new PdfReader(SOURCE_PDF))
using (PdfWriter writer = new PdfWriter(TARGET_PDF))
using (PdfDocument document = new PdfDocument(reader, writer))
{
for (int i = 1; i <= document.GetNumberOfPages(); i++)
{
PdfPage page = document.GetPage(i);
Rectangle cropBox = page.GetCropBox();
cropBox.SetWidth(cropBox.GetWidth() - 72);
page.SetCropBox(cropBox);
}
}
如果您在评论中提到,您实际上想将PDF的右侧部分切成宽度为88mm的PDF,并保持相同的高度,替换
cropBox.SetWidth(cropBox.GetWidth() - 72);
作者
cropBox.SetWidth(88f * 72f / 25.4f);
裁剪框的尺寸以默认用户空间单位给出,该单位又默认为1⁄72英寸。因此,要设置以毫米为单位的尺寸,必须先将该数字乘以(72 / 25.4)。
两句话:
实际上,默认用户空间单元可能会有所不同,如果设置了页面的[[UserUnit属性,其指定为
正数,应为默认用户空间单位的大小,为1⁄72英寸的倍数。支持值的范围应取决于实现。默认值:1.0(用户空间单位为1⁄72英寸)。
(ISO 32000-1,表30-页面对象中的条目)
尽管很少使用此属性,特别是因为“支持的值的范围应取决于实现”位,因此在上面我忽略了它。crop而是要enlarge页面区域,则可能不仅需要扩大CropBox,还需要扩大MediaBox] >。裁剪,出血,修剪和美术包装盒通常不应超出介质包装盒的边界。如果这样做,它们将有效地减少到与介质盒的交点。
((ISO 32000-1,第14.11.2.1节,页面边界/常规) MediaBoxPdfPage
具有类似的方法GetMediaBox
和SetMediaBox
,可用于放大