使用iTextSharp设置图像位置

时间:2013-04-30 07:35:47

标签: c# itextsharp

我对纸张尺寸的页面方向有疑问。
我有一个包含肖像横向页面的pdf文件。

此代码完美无缺。

string FileLocation = "c:\\Temp\\SomeFile.pdf";
    string WatermarkLocation = "c:\\Temp\\watermark.gif";

    Document document = new Document();
    PdfReader pdfReader = new PdfReader(FileLocation);
    PdfStamper stamp = new PdfStamper(pdfReader, new FileStream(FileLocation.Replace(".pdf","[temp][file].pdf"), FileMode.Create));

    iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(WatermarkLocation);
    img.SetAbsolutePosition(250,300); // set the position in the document where you want the watermark to appear (0,0 = bottom left corner of the page)

    PdfContentByte waterMark;
    for (int page = 1; page <= pdfReader.NumberOfPages; page++)
    {
        waterMark = stamp.GetUnderContent(page);
        waterMark.AddImage(img);
    }
    stamp.FormFlattening = true;
    stamp.Close();

    // now delete the original file and rename the temp file to the original file
    File.Delete(FileLocation);
    File.Move(FileLocation.Replace(".pdf", "[temp][file].pdf"), FileLocation);

因为我使用绝对值来设置图像位置。

img.SetAbsolutePosition(250,300);

如果页面是横向还是纵向,T如何设置图像位置?
note :一张包含横向和纵向页面方向的pdf。

我是否可以使用if语句?

if (//paper is landscape)
{
 //code here
}
else 
{
 //code here

}

1 个答案:

答案 0 :(得分:1)

你想达到什么目的?

通常,iText会考虑页面旋转的值。这意味着当旋转页面时,坐标也将旋转。

如果您想要否决这一点,可以添加以下行:

stamper.RotateContents = false;

Chapter 6 of my book中对此进行了解释。您可以尝试this example查看差异:

  1. 没有轮换,正常添加文字:hello1.pdf
  2. 旋转,正常添加的文字(=已旋转):hello2.pdf
  3. 旋转,添加了旋转的文字被忽略:hello3.pdf
  4. 当然,这假定为页面定义了旋转。有时,通过定义不同的页面大小而不是定义旋转来模仿风景。

    在这种情况下,您还应该阅读Chapter 6,因为它解释了如何获取文档的MediaBox。请参阅介绍GetPageSize()GetRotation()GetPageSizeWithRotation()等方法的示例PageInformation

    这是所有文件记录,但如果它没有回答你的问题,请澄清。如示例中所示,在添加新内容时默认会考虑轮换,因此我可能误解了这个问题。