此刻我迷路了。 我试图完成的是在另一个上添加一个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位置,然后它在页面上垂直居中。
有人可以给我一个小费吗?
答案 0 :(得分:3)
所以我解决了这个问题。 问题是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。