gpt4 book ai didi

itextsharp - 导入 PDF 位置 PDFStamper

转载 作者:行者123 更新时间:2023-12-04 05:08:09 24 4
gpt4 key购买 nike

我现在迷路了。
我试图完成的是在另一个(如水印)上添加一个 PDF。
问题是我似乎不明白使用的坐标系,因为
我的水印表现出乎意料。

这两个 PDF 具有不同的尺寸。

我的目标具有以下维度:
595高度
842宽

应添加的 PDF 具有以下维度:
41高度
552宽

在我的代码中,我执行以下操作:

public bool AddPdf(ref PdfReader pdfSource, ref PdfReader pdfTarget, ref FileStream destination)
{
PdfStamper stamper = null;
try
{
stamper = new PdfStamper( pdfSource, destination );
PdfImportedPage importatedPage = stamper.GetImportedPage(pdfTarget, 1);

PdfContentByte background;
for (int iPage = 1; iPage <= pdfSource.NumberOfPages; iPage++)
{
background = stamper.GetOverContent(iPage);
background.AddTemplate(importatedPage, 0, 0 + importHeight);
}
}

当我这样做时,我希望我的水印出现在左下角。
相反,它位于页面的某个地方(我没有看到)。只是为了测试,我将 600 硬编码为 y 位置,然后它在页面上垂直居中。

有人可以给我一个提示吗?

最佳答案

所以我解决了这个问题。
问题是 sourcepdf 有一个cropbox - 我只需要用这些信息纠正我的 x 和 y 位置:

            PdfStamper stamper = null;
try
{
stamper = new PdfStamper(pdfSource, destination);
PdfImportedPage importatedPage = stamper.GetImportedPage(pdfTarget, 1);
PdfContentByte background;
for (int iPage = 1; iPage <= pdfSource.NumberOfPages; iPage++)
{
background = stamper.GetOverContent(iPage);

// here comes the important part
Rectangle cropBox = pdfSource.GetCropBox(iPage);

float xCorrected = 0 + cropBox.Left;
float yCorrected = 0 + cropBox.Bottom;

background.AddTemplate(importatedPage, xCorrected, yCorrected);
}
}

请记住,如果您想在原件上盖章的 pdf 也有一个裁剪框,您需要再次将 x,y 减少该裁剪框的 x,y。

关于itextsharp - 导入 PDF 位置 PDFStamper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15243548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com