Có thể sử dụng iTextSharp để xóa khỏi một đối tượng tài liệu PDF không hiển thị (hoặc ít nhất không được hiển thị) không?Xóa các đối tượng vô hình PDF bằng iTextSharp
Thông tin chi tiết:
1) nguồn của tôi là một trang PDF có chứa hình ảnh và văn bản (có thể một số bản vẽ vectơ) và phông chữ nhúng.
2) Có giao diện để thiết kế nhiều 'hộp cắt'.
3) Tôi phải tạo một tệp PDF mới chỉ chứa những gì nằm trong các hộp cắt. Bất cứ điều gì khác phải được loại bỏ khỏi kết quả tài liệu (thực sự tôi có thể chấp nhận nội dung đó là một nửa bên trong và một nửa bên ngoài, nhưng điều này không phải là lý tưởng và nó không nên xuất hiện anyway).
Giải pháp của tôi cho đến nay:
tôi đã phát triển thành công một giải pháp mà tạo ra văn bản tạm thời mới, mỗi người có chứa các nội dung của mỗi hộp cây trồng (sử dụng writer.GetImportedPage và contentByte.AddTemplate đến một trang đó là chính xác kích thước của hộp cắt). Sau đó, tôi tạo tài liệu cuối cùng và lặp lại quy trình, sử dụng phương thức AddTemplate làm vị trí cho mỗi "trang được cắt" trong trang cuối cùng.
Giải pháp này có 2 nhược điểm lớn:
- kích thước của tài liệu là [kích thước ban đầu] * [số hộp cây trồng], kể từ khi toàn bộ trang là có tên, đóng dấu nhiều lần! (vô hình, nhưng ở đó)
- văn bản vô hình vẫn có thể được truy cập bằng cách chọn tất cả (CTRL + A) trong Reader và dán.
Vì vậy, tôi nghĩ rằng tôi cần phải lặp qua các đối tượng PDF, phát hiện xem nó có hiển thị hay không và xóa nó. Tại thời điểm viết bài, tôi đang cố gắng sử dụng pdfReader.GetPdfObject.
Cảm ơn sự giúp đỡ.
Do iText cung cấp API cấp thấp cho phép bạn thao tác gần như mọi thứ trong tài liệu, ** có thể **. Đó là ** không ** để nói rằng nó là ** dễ dàng **, mặc dù, vì bạn sẽ phải tự viết mã để xác định cho mỗi phần tử trong nội dung trang cho dù có hiển thị hay không, và bạn sẽ phải cùng nhau dán các phần còn lại của nội dung. Bạn có thể giảm kích thước tài liệu kết quả trong giải pháp hiện tại của mình, tuy nhiên, nếu bạn sử dụng lại mẫu trang đã nhập nếu nhiều phần của nó được hiển thị. Công việc thú vị trong nhiều tuần ... – mkl
Hãy thử sử dụng lớp 'PdfStamper' để cắt xén: http://itextpdf.com/examples/iia.php?id=231 –
Tôi không phải là 100 phần trăm về điều này như xa như iTextSharp là có liên quan nhưng iPdfSharp có khả năng hiển thị từ biểu mẫu. ý tưởng là bạn mở trang của bạn, rằng bạn đang cắt xén, bên trong một biểu mẫu và sau đó chỉ hiển thị các phần bạn cần vào một tài liệu mới. Bạn sẽ không tạo nhiều bản sao và các phần được hiển thị (cắt) sẽ là hình ảnh. Hãy thử để xem nếu đây là một tùy chọn dưới api IText. – Alex