Tôi đang sử dụng iText (cụ thể iTextSharp 4.1.6) và tôi muốn tạo PDF bằng cách kết hợp các trang từ các tệp PDF hiện có mà còn chèn các trang mới được tạo từ một hình ảnh.iText - cách thêm trang vào tài liệu được tạo bằng PdfCopy
Tôi có hai phần này hoạt động riêng biệt bằng cách sử dụng PdfCopy và PdfWriter tương ứng. Mã để tạo ra một trang từ một hình ảnh trông như thế này:
PdfWriter pw = PdfWriter.GetInstance(doc, outputStream);
Image img = Image.GetInstance(inputStream);
doc.Add(img);
doc.NewPage();
Bây giờ, Từ PdfCopy thừa hưởng từ PdfWriter, tôi nghĩ rằng tôi sẽ có thể thêm như "trang hình ảnh" để đối tượng PdfCopy của tôi bằng cách sử dụng kỹ thuật tương tự, nhưng nó không hoạt động (nếu bạn khởi tạo PdfCopy thay vì PdfWriter trong ví dụ trên, không có gì xuất hiện trên trang).
Nhìn nhanh mã nguồn, tôi nhận thấy rằng khi contstructor cho PdfCopy gọi hàm tạo superclass nó làm như vậy với đối tượng Document mới, không phải là một đối tượng được truyền vào, vì vậy tôi đoán đây là lý do.
Có cách nào tốt hơn để thực hiện việc này không? Hiện tại, dự đoán tốt nhất của tôi là tạo một trang Pdf từ hình ảnh bằng cách sử dụng PdfWriter và sau đó thêm nó vào tài liệu bằng PdfCopy, nhưng điều đó có vẻ giống như một chút giải pháp.
Những gì bạn mô tả như một công trình xung quanh đối với tôi dường như là một giải pháp thích hợp. PdfCopy được thiết kế để kết hợp nhiều tệp PDF và bạn áp dụng nó cho các tệp pdf hiện có trước đó của mình và tệp mới được tạo. nếu hình ảnh không quá lớn, bạn có thể tạo tệp PDF đó trong bộ nhớ (byte []) và đọc nó từ đó; do đó, thậm chí không cần thêm các tệp tạm thời. – mkl
Cảm ơn - Tôi không quá quen thuộc với iText và nó có vẻ rất đầy đủ tính năng mà tôi chỉ không chắc chắn nếu có một cách hoàn toàn khác để làm điều này. Tôi đã thực hiện nó tạo PDF tạm thời trong bộ nhớ và tất cả đều hoạt động đáng yêu :-) – Andy