2013-04-30 42 views
6

Tôi gặp vấn đề liên quan đến hướng trang của khổ giấy.
Tôi có tệp pdf chứa ảnh chân dungphong cảnh trang.Đặt vị trí hình ảnh bằng iTextSharp

mã này hoạt động hoàn hảo.

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); 

vì tôi đang sử dụng giá trị tuyệt đối để đặt vị trí hình ảnh.

img.SetAbsolutePosition(250,300); 

Làm cách nào để T đặt vị trí hình ảnh nếu trang là ngang hoặc dọc?
lưu ý: Một pdf có hướng trang ngang và dọc.

Có khả năng tôi có thể sử dụng nếu câu lệnh không?

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

}

Trả lời

1

Bạn muốn đạt được điều gì?

Thông thường, iText tính đến giá trị của xoay vòng. Điều này có nghĩa là khi một trang được xoay, các tọa độ cũng sẽ được xoay.

Nếu bạn muốn bác bỏ điều này, bạn có thể thêm dòng này:

stamper.RotateContents = false; 

này được giải thích trong Chapter 6 of my book. Bạn có thể thử this example để thấy sự khác biệt:

  1. Không luân chuyển, văn bản bổ sung thường: hello1.pdf
  2. Rotation, văn bản bổ sung thường (= xoay): hello2.pdf
  3. Rotation, văn bản bổ sung với luân bỏ qua: hello3.pdf

Tất nhiên, điều này giả định rằng xoay vòng được xác định cho các trang. Đôi khi, cảnh quan được bắt chước bằng cách xác định kích thước trang khác thay vì xác định xoay vòng.

Trong trường hợp đó, bạn cũng nên đọc Chapter 6 vì giải thích cách lấy MediaBox của tài liệu. xem ví dụ PageInformation giới thiệu các phương pháp như GetPageSize(), GetRotation()GetPageSizeWithRotation().

Đây là tất cả tài liệu, nhưng nếu nó không trả lời câu hỏi của bạn, vui lòng làm rõ. Như được minh họa trong ví dụ, xoay vòng được tính đến theo mặc định khi thêm nội dung mới, vì vậy có thể tôi đã hiểu nhầm câu hỏi.

Các vấn đề liên quan