Làm cách nào để phân tích tệp PDF trong PHP?

Trích xuất văn bản từ tệp PDF có thể là một công việc tẻ nhạt đối với nhà phát triển. Nếu bạn đã từng thử mở một tệp PDF bằng trình soạn thảo văn bản chẳng hạn như Notepad++ chỉ để thực hiện tìm kiếm đơn giản trên một số văn bản mà bạn biết chắc chắn có trong đó, rất có thể bạn sẽ không tìm thấy gì ngoài dữ liệu nhị phân

Điều này là do tính chất mở của định dạng tệp PDF. các thành phần cơ bản của tệp PDF là các đối tượng, thường được xác định bằng một số đối tượng duy nhất và id sửa đổi

Các đối tượng có thể chứa bất kỳ thứ gì như định nghĩa phông chữ, bảng thay thế ký tự và tất nhiên là dữ liệu văn bản. Hầu hết các đối tượng này được nén bằng định dạng gzip và cuối cùng được mã hóa. Bạn cũng có thể mong đợi những thứ thậm chí còn phức tạp hơn dưới mui xe

Bài viết này giải thích cách lớp PHP PDF To Text có thể giúp bạn trích xuất văn bản từ hầu hết mọi tệp PDF

Tiếp theo sẽ là loạt bài giải thích các phần khác nhau của định dạng tệp PDF được quan tâm trong quá trình trích xuất văn bản

Nói về một quá trình cài đặt sẽ hơi tự phụ. chỉ cần giải nén PdfToText. tệp phpclass từ. zip vào thư mục bao gồm ưa thích của bạn

Bạn cũng có thể từ kho lưu trữ trình soạn thảo Lớp học PHP

Một phiên bản trong tương lai có thể bao gồm các tệp dữ liệu vệ tinh bổ sung và hoàn toàn tùy chọn, nhưng đó là một câu chuyện khác sẽ là chủ đề của một bài báo khác

Trước khi bắt đầu làm việc với lớp PdfToText, tất nhiên bạn sẽ cần một vài tệp mẫu PDF. Nếu bạn không có bất kỳ thứ gì trong tay, một số ít được cung cấp trong PdfToText. zip, dưới thư mục

Nếu bạn đang sử dụng hệ điều hành Windows, các trình điều khiển máy in ảo sau đây có thể giúp bạn tạo các tệp PDF [danh sách sau đây không đầy đủ]

  • Microsoft In sang PDF. giải pháp bản địa từ Microsoft. Nếu chưa được cài đặt trên hệ thống của bạn, bạn có thể xem tại đây. Lưu ý rằng đôi khi nó có thể tạo ra kết quả kỳ lạ
  • Người tạo ra file PDF. một máy in ảo miễn phí. Phiên bản miễn phí chứa một số quảng cáo
  • PrimoPdf. một máy in PDF ảo miễn phí khác
  • Pdf kiến ​​trúc sư 4. Một sản phẩm khác từ PdfForge, không miễn phí. Tuy nhiên, nó bao gồm một trình điều khiển máy in PDF ảo miễn phí thực sự giống với Pdf Creator [nếu không giống, ngoại trừ tên]
  • Pdf Pro 10. Giải pháp trả phí để chỉnh sửa tệp PDF. Nó bao gồm một trình điều khiển máy in ảo miễn phí có nhiều tính năng thú vị, chẳng hạn như bộ đệm máy in phức tạp để quản lý các tệp được in trên máy chủ
  • Trình tạo ảnh PdFill. Một máy in ảo miễn phí. Bạn cũng có thể mua trình chỉnh sửa PDF với giá dưới 20 đô la
  • Và, tất nhiên, Adobe Acrobat DC
Bạn cũng có thể sử dụng Microsoft Word [>= 2007], OpenOffice và LibreOffice để lưu tài liệu của mình dưới dạng tệp PDF

Mặc dù định dạng tệp PDF thực sự linh hoạt, nhưng lớp PdfToText đã được thiết kế để che giấu sự phức tạp của dữ liệu cơ bản khỏi bạn và cung cấp một giao diện đơn giản

Về cơ bản, tập lệnh PHP đơn giản nhất sẽ xử lý tệp PDF được cung cấp dưới dạng đối số dòng lệnh và chuyển nội dung văn bản của nó sang đầu ra tiêu chuẩn sẽ trông như thế này

Text ;
	

Khi bạn đã tải tệp PDF, nội dung văn bản của nó có thể truy cập được thông qua thuộc tính Văn bản. Tên tệp được cung cấp cho hàm tạo của lớp là tùy chọn, bạn có thể bỏ qua nó, sau đó sử dụng phương thức Load[] để trích xuất nội dung của nó

Điều này cho phép bạn chỉ định các tùy chọn bổ sung hoặc đặt các thuộc tính đặc biệt trước khi tải nội dung PDF thực tế. Ví dụ sau sẽ trích xuất hình ảnh từ tệp PDF của bạn bằng cách đặt thuộc tính Tùy chọn trước khi gọi phương thức Load[]

Options = PdfToText::PDFOPT_DECODE_IMAGE_DATA;
    $pdf->Load[ $argv [1] ];
    echo $pdf->Text ;
Lưu ý rằng cách tiếp cận thứ hai này sẽ cho phép bạn sử dụng lại cùng một đối tượng [với cùng các tùy chọn] để xử lý các tệp PDF khác nhau

Bạn có thể truy xuất nội dung trang riêng lẻ bằng cách sử dụng thuộc tính mảng Trang có sẵn, như thuộc tính Văn bản, sau khi nội dung tệp PDF đã được tải

Thuộc tính Trang là một mảng kết hợp có khóa là số trang và giá trị là nội dung trang

Tập lệnh mẫu hiển thị nội dung trang riêng lẻ từ tệp PDF sẽ trông như thế này

 Pages as $page_number => $page_contents]
        echo "Contents of page #$page_number :\n$page_contents\n";

Định dạng tệp PDF hỗ trợ một số loại nội dung hình ảnh. Trong phiên bản hiện tại [1. 2. 46], lớp PdftoText chỉ có thể xử lý hình ảnh được mã hóa ở định dạng JPEG

Truy xuất nội dung hình ảnh đơn giản như chỉ định một tùy chọn đặc biệt làm tham số thứ hai của hàm tạo lớp


	Or, if you prefer deferred loading :

	
Options = PdfToText :: PDFOPT_DECODE_IMAGE_DATA ;
    $pdf->Load[ $argv [1] ];
.

Có một tùy chọn khác, PdfToText. PDFOPT_GET_IMAGE_DATA, chỉ cần tải dữ liệu hình ảnh thô vào thuộc tính mảng ImageData. Bằng cách này, bạn có thể có nhiều phần tử trong thuộc tính ImageData hơn trong Hình ảnh, vì lớp PdfToText hiện chỉ hỗ trợ .

Lưu ý rằng việc chỉ định cờ PDF_DECODE_IMAGE_DATA sẽ tự động đặt cờ PDFOPT_GET_IMAGE_DATA.

Khi bạn đã trích xuất hình ảnh từ tài liệu PDF, nếu hình ảnh có văn bản được viết trên đó, bạn cũng có thể trích xuất văn bản trên hình ảnh. Tuy nhiên, đó là bây giờ nằm ​​ngoài phạm vi của lớp

Hiện tại, bạn có thể sử dụng Lớp PHP OCR cho mục đích đó. Nó có thể nhận dạng văn bản trong một hình ảnh và xử lý nó để trích xuất văn bản

Bạn cũng có thể hiển thị tài liệu PDF thành tệp hình ảnh nhưng điều đó cũng nằm ngoài phạm vi của gói này. Để làm được điều đó, bạn sử dụng trình chuyển đổi lớp PDF sang hình ảnh bằng PHP để thay thế

Tài liệu đầy đủ về định dạng này có tại Adobe PDF Reference phiên bản 1. 7 trang

Nếu bạn đủ nhiệt tình để đọc 1300 trang của tài liệu này, . Một số ghi chú kỹ thuật này dài hơn 200 trang

Có rất nhiều cách để viết cùng một nội dung trang bằng ngôn ngữ giống như Adobe Postscript mà đôi khi bạn có thể nhận được kết quả lạ. Nếu trường hợp này xảy ra, vui lòng liên hệ với tôi trên diễn đàn hỗ trợ gói này.

Bạn cũng có thể xem kho lưu trữ Github của tôi và thậm chí đưa ra các yêu cầu kéo. Tôi cũng có một trang Web dành riêng cho lớp học này.

Tuy nhiên, nếu bạn gặp bất kỳ sự cố nào khi xử lý một trong các tệp PDF của mình và thực sự không muốn xem qua mã để cố gắng hiểu điều gì đang xảy ra, . vigh@wuthering-byte. com. Chỉ cần gửi cho tôi tệp PDF bị lỗi dưới dạng tệp đính kèm cùng với một chút mô tả về sự cố và tôi sẽ sẵn lòng cố gắng giải quyết vấn đề của bạn.

Sau đây là danh sách các sự cố đã biết. Tôi vẫn đang làm việc với chúng và chúng thường sẽ được triển khai trong các phiên bản sau.

  • Các ngôn ngữ RTL, chẳng hạn như tiếng Ả Rập, tiếng Do Thái hoặc tiếng Syriac, không được xử lý chính xác. chúng được trích xuất từ ​​​​trái sang phải
  • Chỉ hình ảnh JPEG hiện được hỗ trợ
  • Hiện tại không có hỗ trợ cho các tệp được bảo vệ bằng mật khẩu [lưu ý rằng tôi không có ý định phát triển trình bẻ khóa mật khẩu, chỉ là một tính năng cho phép bạn trích xuất nội dung văn bản từ tệp PDF được mã hóa bằng mật khẩu, nếu bạn cung cấp đúng mật khẩu]
  • Các tệp được ký kỹ thuật số hiện không được hỗ trợ
  • Nội dung văn bản đôi khi có thể hiển thị các ký tự được dịch sai. Lý do tại sao sẽ được giải thích trong loạt bài viết tiếp theo
  • Nội dung văn bản được trích xuất có thể không phản ánh chính xác vị trí văn bản trên trang. Điều này đặc biệt đúng đối với các tệp PDF chứa dữ liệu ở định dạng bảng. Một lần nữa, sự cố này sẽ được khắc phục trong bản phát hành trong tương lai và được giải thích trong một trong các bài viết trong tương lai về lớp này.
  • Phông chữ CID [phông chữ nội bộ của Adobe, chủ yếu được sử dụng bởi các ngôn ngữ phía đông và được phát triển trước khi nỗ lực Unicode diễn ra] là . Đây sẽ là chủ đề của một bài viết khác.

Bài viết này giải thích cách sử dụng cơ bản của PdfToText . Nó trình bày một số tính năng của lớp, đưa ra một số ví dụ cơ bản về cách sử dụng nó và liệt kê trạng thái phát triển hiện tại của nó.

Sẽ có nhiều bài viết tiếp theo, đi sâu vào phần bên trong của định dạng tệp PDF và giải thích cách lớp PdfToText cố gắng xử lý chúng. Bài viết tiếp theo sẽ đưa bạn đến một cái nhìn tổng quan về bố cục tệp PDF [ít nhất là những phần mà chúng ta quan tâm khi xử lý trích xuất văn bản]

Nếu bạn thích bài viết này, xin vui lòng chia sẻ nó với các nhà phát triển khác. Nếu bạn có câu hỏi gửi bình luận ở đây

Làm cách nào để đọc dữ liệu từ tệp PDF trong PHP?

Đưa nó vào trang web được yêu cầu bằng PHP. Tạo một biểu mẫu HTML, trong đó chúng tôi có thể chọn một tệp PDF từ máy tính của bạn và cũng có thể kiểm tra xem phần mở rộng của tệp đó có phải là PDF hay không . Tiếp cận. Đảm bảo bạn đã cài đặt máy chủ XAMPP hoặc máy chủ WAMP trên máy của mình. Trong bài viết này, chúng tôi sẽ sử dụng máy chủ XAMPP.

Có thể phân tích một tệp PDF không?

Trình phân tích cú pháp PDF [đôi khi còn được gọi là trình quét PDF] là một phần mềm có thể được sử dụng để trích xuất dữ liệu từ tài liệu PDF . Trình phân tích cú pháp PDF có thể ở dạng thư viện dành cho nhà phát triển hoặc dưới dạng sản phẩm phần mềm độc lập dành cho người dùng cuối. Trình phân tích cú pháp PDF được sử dụng chủ yếu để trích xuất dữ liệu từ một loạt tệp PDF.

Làm cách nào để chuyển đổi PDF sang HTML trong PHP?

4 câu trả lời .
tải về và giải nén. exe vào một thư mục. http. //nguồnforge. mạng/dự án/pdftohtml/
tạo một. php và đặt mã này [giả sử rằng pdftohtml. exe nằm trong thư mục đó và mẫu nguồn. .
nhập MyFolder, và bạn sẽ thấy các tệp được chuyển đổi [tùy thuộc vào số lượng trang. ]

Làm cách nào để hiển thị tệp PDF trong trình duyệt bằng PHP?

PHP sử dụng mã chuẩn để hiển thị tệp pdf trong trình duyệt web . Quá trình hiển thị pdf liên quan đến vị trí của tệp PDF trên máy chủ và nó sử dụng nhiều loại tiêu đề khác nhau để xác định thành phần nội dung ở dạng loại, Bố cục, Mã hóa truyền, v.v. PHP chuyển các tệp PDF để đọc nó trên trình duyệt.

Chủ Đề