2011-02-08 47 views
6

Tôi đang cố gắng mở rộng hình ảnh thành trang đầy đủ trên tài liệu PDF. Tôi đang tạo tài liệu bằng iTextSharp. Hình ảnh có tỷ lệ khung hình chính xác cho trang nhưng tôi lý tưởng rằng hình ảnh bị bóp méo thay vì không lấp đầy tất cả các khu vực có sẵn.iTextSharp Chia tỷ lệ hình ảnh thành trang đầy đủ

Tôi hiện có:

Dim Document As New Document(PageSize, 0, 0, 0, 0) 
... 
Dim ContentImage = '''Method call to get image' 
Dim Content = iTextSharp.text.Image.GetInstance(ContentImage, New BackgroundColor) 
Content.SetAbsolutePosition(0, 0) 
Content.ScaleToFit(Document.PageSize.Width, Document.PageSize.Height) 
Document.Add(Content) 

Thật không may, điều này không chiếm lề máy in ...

tôi cần những hình ảnh để phù hợp với khu vực có thể in được (một cách tốt nhất có thể được định nghĩa trong một pdf)

Cảm ơn trước

+0

@plinth Cảm ơn, đã không phát hiện rằng một – Basic

Trả lời

8

Nếu bạn quyết tâm thực hiện nó theo kinh nghiệm, sau đó in một trang có mã của bạn như tỷ lệ với đường viền trang sao cho hình ảnh sẽ tô màu đen trong nửa inch đầu tiên của lề, nếu nó có thể đi đến cạnh. Đo khoảng cách từ mỗi cạnh thành đen theo inch và chia mỗi khoảng 72,0.

Hãy đặt tên cho chúng. Lm, rm, tm, bm (trái đúng lề bottom top

Dim pageWidth = document.PageSize.Width - (lm + rm); 
Dim pageHeight = document.PageSize.Height - (bm + tm); 
Content.SetAbsolutePosition(lm, bm); 
Content.ScaleToFit(pageWidth, pageHeight); 
Document.Add(Content) 
+0

Làm cho cảm giác, cảm ơn – Basic

3

Khu vực có thể in phụ thuộc vào máy in, tệp PDF không biết gì về nó. Trang PDF có thể có nội dung từ lề đến lề. Bạn có thể in tệp PDF với tùy chọn 'Vừa với máy in lề' để toàn bộ trang PDF được in được chia tỷ lệ thành khu vực có thể in của máy in.

+0

Hiểu - nhưng tôi tự động hoá việc in ấn sử dụng (ban đầu): 'Writer.AddJavaScript ("this.print (false);", False) 'và muốn tránh đặt các tùy chọn mở rộng theo cách thủ công. Điều này có thể được tự động? Trong kịch bản này, nó cho in tài liệu trong nhà trên một máy in duy nhất vì vậy tôi cũng có thể chấp nhận phải biết các lề thích hợp và đặt chúng trên PDF trong quá trình tạo. – Basic

1

Bạn có thể mở rộng một hình ảnh để phù hợp với những trang PDF bằng cách sử dụng sau đoạn mã

VB.

Dim img As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance(System.Drawing.Image.FromStream(resourceStream), System.Drawing.Imaging.ImageFormat.Png) 
img.SetAbsolutePosition(0, 0) 
'set the position to bottom left corner of pdf 
img.ScaleAbsolute(iTextSharp.text.PageSize.A7.Width, iTextSharp.text.PageSize.A7.Height) 
'set the height and width of image to PDF page size 

C#

iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(System.Drawing.Image.FromStream(resourceStream, System.Drawing.Imaging.ImageFormat.Png); 
img.SetAbsolutePosition(0, 0); // set the position to bottom left corner of pdf 
img.ScaleAbsolute(iTextSharp.text.PageSize.A7.Width,iTextSharp.text.PageSize.A7.Height); // set the height and width of image to PDF page size 

Nếu bạn muốn mã đầy đủ (C#) bạn cũng có thể tham khảo liên kết sau đây. Mã đầy đủ thêm hình ảnh vào tất cả các trang của một tệp PDF hiện có.

https://stackoverflow.com/a/45486484/6597375

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