Không có cách nào chống nước để làm những gì bạn muốn.
Văn bản có thể xuất hiện theo nhiều cách khác nhau bên trong tệp PDF. Ví dụ: người ta có thể vẽ tất cả các hình tượng bằng cách sử dụng toán tử trạng thái đồ họa thay vì sử dụng trạng thái văn bản. (Tôi xin lỗi nếu điều này nghe có vẻ như Trung Quốc với bạn, nhưng tôi có thể đảm bảo với bạn đó là ngôn ngữ PDF thích hợp.)
Nếu một giải pháp đặc biệt bao gồm các tình huống phổ biến nhất và bỏ lỡ một PDF lạ một lần là OK cho bạn, sau đó bạn đã có một giải pháp tốt đầu tiên.
Trong mã của bạn, bạn lặp lại tất cả các trang và hỏi iText nếu có bất kỳ văn bản nào trên trang. Đó là một dấu hiệu tốt.
Nội bộ, mã của bạn đang sử dụng giao diện RenderListener
. iText phân tích cú pháp nội dung của trang và kích hoạt các phương thức trong triển khai thực hiện RenderListener
cụ thể. Đây là triển khai thực hiện tùy chỉnh: MyTextRenderListener. Triển khai tùy chỉnh này được sử dụng trong ví dụ ParsingHelloWorld.
Ngoài ra còn có phương thức renderImage()
(xem ví dụ MyImageListener). Nếu phương pháp này được kích hoạt, bạn chắc chắn rằng 100% cũng có Hình ảnh trong trang và bạn có thể sử dụng đối tượng ImageRenderInfo
để có được vị trí, chiều rộng và chiều cao của hình ảnh (nghĩa là: nếu bạn biết cách diễn giải số Matrix
được trả về theo phương thức getImageCTM()
).
Sử dụng tất cả các yếu tố này, bạn đã có thể có được một chặng đường dài để đạt được những gì bạn cần, nhưng lưu ý rằng sẽ luôn có các tệp PDF lạ sẽ thoát khỏi tất cả các séc của bạn.
Nguồn
2013-05-15 17:28:56
Điều này có vẻ khá liên quan đến tình cờ. Có lẽ bạn sẽ cần một tiền thưởng ở đây – Coffee
Cảm ơn bạn Mr Adel Tôi hy vọng như vậy :) –