2012-01-17 29 views
5

Tôi đang xây dựng một máy in nhãn. Nó bao gồm một logo và một số văn bản, không khó khăn. Tôi đã dành 3 ngày cố gắng để có được biểu trưng SVG gốc để vẽ lên màn hình nhưng SVG quá phức tạp, sử dụng quá nhiều gradient, v.v.Làm cách nào để cải thiện chất lượng hình ảnh ReportLab?

Vì vậy, tôi có biểu trưng bitmap chất lượng cao (dưới định dạng JPG hoặc PNG) và tôi vẽ nó trên canvas của ReportLab. Hình ảnh được đề cập lớn hơn 85 * 123px. Tôi đã làm điều này hy vọng ReportLab sẽ nhúng toàn bộ điều và quy mô nó cho phù hợp. Dưới đây là cách tôi đang thực hiện:

canvas.drawImage('logo.jpg', 22+xoffset, 460, 85, 123) 

Vấn đề là, giả định của tôi không chính xác. Dường như nó giảm xuống còn 85 * 123px ở độ phân giải màn hình và điều đó có nghĩa là khi nó được in, nó trông không tuyệt vời.

ReportLab có bất kỳ lệnh DPI nào cho canvases hoặc tài liệu để tôi có thể giữ chất lượng lành mạnh không?

Trả lời

1

Một tùy chọn mà tôi nghĩ đến khi viết câu hỏi là: tăng kích thước tệp PDF và để máy in sắp xếp mọi thứ.

Nếu tôi chỉ nhân tất cả số của mình với 5 và máy in đã quản lý để tìm ra mọi thứ, tôi có gần 350DPI ... Nhưng tôi đang thực hiện một giả định khá.

8

Trước đây đã từng làm việc tại công ty ReportLab, tôi có thể cho bạn biết rằng hình ảnh raster không đi qua bất kỳ việc lấy lại mẫu/giảm kích thước tự động nào khi được đưa vào tệp PDF. Kích thước 85 * 123 bạn đang sử dụng không phải là pixel, nhưng điểm (pt) là đơn vị vật lý như milimet hoặc inch.

Tôi khuyên bạn nên in PDF bằng các hình ảnh chất lượng khác nhau để xác nhận điều này hoặc thu nhỏ bằng rất, rất xa bằng trình xem PDF của bạn. Nó sẽ luôn luôn trông hơi mờ trong một trình xem PDF khi hình ảnh được lấy lại hai lần (một lần trong phần mềm hình ảnh và sau đó một lần nữa đến các pixel có sẵn cho trình xem PDF).

Đây là cách tôi sẽ tính toán những gì kích thước bằng pixel để tạo ra một hình ảnh raster cho nó để in tốt ở một kích thước vật lý đưa ra:

Giả sử tôi muốn hình ảnh được rộng 2 inch, có 72 điểm trong một inch để chiều rộng trong mã của tôi sẽ là 144. Tôi biết rằng độ phân giải sắc nét tốt để in ở 300dpi (dấu chấm trên mỗi inch) để hình ảnh raster được lưu rộng 600px.

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