如何使用iTextSharp(或iText)将页面从一个PDF裁剪和复制到另一个PDF

时间:2018-03-23 20:12:53

标签: pdf itext

我已编写代码来执行以下操作:

  1. 获取特定页面大小的PDF(例如,8.5“x 11”)
  2. 创建一个页面大小较大的新PDF(例如,17“x 11”)
  3. 将原始PDF格式化为新格式(例如,2-up,以便生成的新PDF格式并排显示原始PDF格式)
  4. 为此,我使用PdfWriter.GetImportedPage方法从原始PDF获取当前页面,然后使用PdfContentByte.AddTemplate(page, x, y)方法将原始页面放在新PDF的当前页面上。< / p>

    我的新挑战是我需要在将原始PDF添加到新PDF之前裁剪原始PDF。例如,想象一下我想要在施加它之前裁剪原始PDF的2“。输入的PDF仍然是8.5”x 11“,新的PDF仍然是17”x 11“,但是两个”副本“新版本中的原始PDF将从其顶部,右侧,底部和左侧移除2个。

    希望这些图像可以使这一点更加清晰。这就是我现在所做的,做一个2-up拼版。 (这是在游泳。)

    Current 2-up imposition

    但这就是我需要做的事情:

    Desired 2-up imposition with 1" crop

    我知道我可以使用MediaBox或CropBox设置更改查看器中PDF的显示,但AddTemplate不遵守这些设置。我知道使用AddTemplate我可以使用变换矩阵来定位页面或缩放或旋转它,但我不想缩小原始PDF,我想裁剪它。

    由于

1 个答案:

答案 0 :(得分:0)

我发现在将其添加到新PDF(通过AddTemplate)之前,我可以使用导入页面的PdfImportedPage page = writer.GetImportedPage(pageNumber); // Crop! page.BoundingBox = new Rectangle(llx, lly, urx, ury); // Add to new PDF writer.DirectContent.AddTemplate(page, x, y); 进行裁剪。

所以我的代码看起来像这样:

for component in issue["fields"]["components"]:
   print component["name"]

这就是诀窍!