Trích xuất hình ảnh nền từ một tập tin PDF?


8

Tôi có một tệp PDF chứa bản đồ của tòa nhà tôi làm việc ở đây:

http://www.libsys.und.edu/dev/FloorPlans_All.pdf

Các tệp nguồn ban đầu đã bị mất và tôi đã được yêu cầu trích xuất hình ảnh bản đồ, tốt nhất là không có văn bản và biểu tượng được phủ lên trên chúng. Điều này đã được chứng minh là khó khăn khó khăn.

Cho đến nay, tôi đã thử các chương trình GUI sau:

  • Adobe Reader: cho phép tôi chọn văn bản, nhưng không phải hình nền
  • FoxIt PDF Viewer: cho phép tôi chọn văn bản, nhưng không phải hình ảnh nền
  • XPDF trên Ubuntu 10.10: cho phép mes chọn văn bản, nhưng không phải hình ảnh nền

Và các chương trình dòng lệnh sau:

  • pdfimages: trích xuất các biểu tượng chỉ phòng tắm tốt, nhưng không phải hình ảnh nền
  • pdftohtml: giống như pdfimages, cộng với nó làm cho một tài liệu HTML được đánh dấu kém
  • pdfextract: giống như pdfimages
  • convert: hình ảnh được lưu thành công, nhưng với văn bản được ghi vào chúng

Tôi thậm chí đã thử mở PDF bằng tay trong trình soạn thảo văn bản và trích xuất các đối tượng luồng bằng cách dán chúng vào một tệp mới và lưu nó với một phần mở rộng .jpg, .png hoặc .bmp (lần lượt từng phần). Xem xét làm thế nào tôi biết ít về cấu trúc bên trong của các tệp PDF, không có gì ngạc nhiên khi điều này không hoạt động.

Vậy ... có cách nào tôi có thể lấy lại hình ảnh bản đồ từ thứ này mà không cần lấy văn bản và biểu tượng không?


Cách tôi thường giải quyết loại nhiệm vụ này: (1) Sử dụng qpdfđể chuyển đổi các phần nhị phân thành ASCII càng xa càng tốt. (2) Sử dụng trình chỉnh sửa văn bản để làm cho tất cả văn bản trở nên vô hình mà tôi không muốn thấy trên màn hình hoặc trong bản in (có thể dễ dàng đạt được và không làm hỏng bảng XRef bằng cách bật cờ vô hình ). (3) Chưng cất lại kết quả với Ghostscript để làm giảm kích thước của nó càng nhiều càng tốt. - Thật không may, tập tin của bạn không còn có thể tải xuống để trình bày quy trình ...
Kurt Pfeifle

Câu trả lời:


7

Bạn có thể tải xuống thư viện XPDF từ http://www.foolabs.com/xpdf/doad.html cho Linux và Windows. Sau đó chạy pdfimages -j input.pdf outputvà bạn sẽ nhận được output-000.jpg, output-001.jpgv.v. Ngoài ra, hãy xem http://linuxcommand.org/man_pages/pdfimages1.html để biết thêm các tùy chọn sử dụng.


1
Chỉnh sửa, có vẻ như hình ảnh là một đồ họa vector được nhúng trực tiếp vào PDF. Hãy thử mở nó trong một cái gì đó như Inkscape hoặc Adobe Illustrator xử lý đồ họa vector.
mybluevan

À Các bản đồ là đồ họa vector - không có gì lạ khi tôi gặp rắc rối như vậy! Inkscape dường như đã mở nó tốt, và tôi có thể chỉnh sửa nó theo nội dung trái tim của tôi. Cảm ơn!
Will Martin

2

Ok, sau khi loay hoay với điều này trong 5 phút, phân tích của tôi là PDF thậm chí còn lạ hơn tôi nghĩ ban đầu, và điều đó đang nói lên điều gì đó.

Không chắc ngân sách của bạn là bao nhiêu, nhưng với Acrobat Pro Extended 9, bạn có thể sử dụng:

A. Công cụ, Chỉnh sửa Nâng cao, Công cụ Văn bản Touchup

-Select All
-Right click, Properties
-Text tab
-Select a standard font (e.g. Arial), close
-Hit Delete

B. Công cụ, Chỉnh sửa nâng cao, Công cụ đối tượng Touchup

-Chọn đối tượng (bạn có thể lấy hầu hết, nhưng không phải tất cả, trong số chúng (ví dụ: không thể chọn biểu tượng máy tính của học sinh), sau đó xóa

Đây là những gì Trang 1 trông giống như sau khi dọn dẹp nhanh: http://dl.dropbox.com/u/7434256/p1test.pdf


Lạ là thiếu. Tôi không biết lịch sử của tập tin này, nhưng Acrobat Pro 8 đã gây rắc rối cho chúng tôi. Inkscape đã lừa, mặc dù, cảm ơn lòng tốt. Bây giờ để chuyển đổi tất cả thành một số SVG thích hợp mà chúng ta có thể tạo đồ họa raster từ ...
Will Martin

1
Công việc bạn đã thực hiện trên PDF gốc (thật không may, không còn khả dụng với tôi nữa) không phải là tốt nhất. Tập tin của bạn vẫn còn ~ 3 MByte. Nó chứa rất nhiều + rất nhiều đối tượng không sử dụng. Nó thậm chí còn chứa một thể hiện của /AAtoán tử (đối với Action Action ) làm cho nó trở thành một tệp PDF nguy hiểm tiềm tàng. Ghostscript đã có thể đun sôi nó xuống tới 60 kByte mà không mất bất kỳ nội dung hiển thị nào của nó. (Các siêu dữ liệu chứa trong các tập tin lây lan hơn 17 đối tượng khác nhau Các als siêu dữ liệu cho thấy có 17 sửa đổi / sửa đổi của tập tin đó từ những sáng tạo trên 2011/01/18 khác nhau..)
Kurt Pfeifle

@pipitas Tôi rất vui vì tôi đã kiểm tra lại lần nữa, hóa ra Apache đã bị hỏng trên máy chủ đó. Bản gốc PDF có sẵn một lần nữa. Mặc dù vậy vẫn khó chịu. Kể từ đó, tôi đã phát hiện ra rằng các bản đồ được tạo ra từ các tệp AutoF DXF, tạo ra đồ họa vector xấu xí nghiêm trọng. Có hàng trăm đường dẫn riêng lẻ trong mỗi bản đồ, mỗi đường một dòng duy nhất có hai điểm kết thúc. Điều này có thể giúp kiến ​​trúc sư dễ dàng thay đổi từng phần của bức tường hoặc bất cứ điều gì, nhưng đó là một nỗi đau ở mông cho bất cứ điều gì khác.
Will Martin

@Will Martin: Ouch!, Đây là một tệp PDF khá lớn chứa nhiều cập nhật tệp ẩn, nội bộ (và do đó: rác từ quan điểm của người dùng). - 16 trang trên 16 MByte khá "nặng" đối với đồ họa vector trông đơn giản. Ít nhất 16 lớp khác nhau ("Nội dung tùy chọn" theo cách nói PDF), một lớp cho mỗi trang. Tôi thà không lội qua mớ hỗn độn này chỉ bằng một trình soạn thảo văn bản ...
Kurt Pfeifle

2
@pipitas: Cảm ơn - điểm công bằng. Mặc dù tôi sẽ không mô tả những gì tôi đã làm như một "công việc" - tôi chỉ chứng minh (sau vài phút chơi xung quanh) rằng điều đó là có thể với Acrobat. Đảm bảo hoàn tiền và tất cả những thứ đó. ;)
Craig H

1

Lấy bản PDF do Craig H tạo ra và tối ưu hóa nó một chút bằng cách chạy nó qua Ghostscript. Trên Windows, dòng lệnh là:

gswin32c.exe ^
   -o p1test-gs-optimized.pdf ^
   -sDEVICE=pdfwrite ^
   -dPDFSETTIINGS=/prepress ^
    p1test.pdf

Trên Linux / Unix / Mac OS X làm:

gs \
   -o p1test-gs-optimized.pdf \
   -sDEVICE=pdfwrite \
   -dPDFSETTIINGS=/prepress \
    p1test.pdf

Điều này sẽ giảm kích thước của tệp từ 3.000 kByte xuống còn khoảng 60 kByte mà không mất nội dung. Sau đó, nhập nó vào Inkscape (hoặc InDesign, Illustrator, ...) sẽ nhanh hơn nhiều ....


1

... bạn có thể thử Photoshop. Nó đọc các tệp PDF và 'có thể' nó có nguồn gốc từ PS và có thể vẫn có các lớp ... nhưng đó là một cú đánh rất dài.


0

Trong môi trường Linux, tôi đã sử dụng pdfmod để trích xuất tất cả các hình ảnh trong một lần. Xem https://wiki.gnome.org/Apps/PdfMod hoặc, đối với người dùng Ubuntu, https://apps.ub Ubuntu.com/cat/appluggest/pdfmod/

Để tải xuống và cài đặt nó trong Ubuntu, chỉ cần gõ sudo apt-get install pdfmod.

  • Bắt đầu GUI pdfmod (nhập vào pdfmodbảng điều khiển hoặc thiết bị đầu cuối dòng lệnh)
  • Mở tài liệu PDF
  • Chọn tất cả các trang (hoặc bất kỳ trang nào bạn muốn trích xuất hình ảnh từ đó)
  • Mục menu Chỉnh sửa sẽ đưa ra tùy chọn trích xuất càng nhiều hình ảnh mà chúng có thể được trích xuất trong phạm vi đã chọn ( export n images, với n số thích hợp). Bạn cũng có thể truy cập lệnh này bằng cách di chuột bằng chuột trên vùng chọn và kích hoạt menu cục bộ (nhấp chuột phải để thuận tay phải).
  • Khi bạn tiếp tục với điều này, một cửa sổ mới sẽ mở ra nơi bạn chọn vị trí để lưu hình ảnh vào.

Hi vọng điêu nay co ich.


Vui lòng đọc Làm thế nào để tôi giới thiệu phần mềm cho một số mẹo về cách bạn nên giới thiệu phần mềm. Cung cấp nhiều hơn chỉ là một liên kết, ví dụ như một số thông tin bổ sung về chính phần mềm và cách nó có thể được sử dụng để giải quyết vấn đề trong câu hỏi. Bạn thậm chí có thể bao gồm một số dòng lệnh ví dụ.
DavidPostill

@DavidPostill. Cảm ơn đã chỉ ra điều này. Xong, tôi tin.
XavierStuvw

Tốt hơn nhiều ...;)
DavidPostill

Bây giờ tôi biết những gì tôi có thể yêu cầu từ câu trả lời cho bài viết của mình :-)
XavierStuvw

-1

Mở tài liệu trên màn hình của bạn, phóng to hình ảnh để làm cho nó lớn nhất có thể nhưng tất cả vẫn còn hiển thị. Nhấn alt + prnt Scrn (hoặc tương đương trên hệ điều hành của bạn) và nó sẽ chụp ảnh màn hình của chương trình. Bây giờ hãy mở sơn hoặc trình chỉnh sửa hình ảnh yêu thích của bạn (photoshop, gimp, v.v.) dán vào ảnh và cắt bỏ bất cứ thứ gì bạn không muốn.


Điều này cũng bao gồm các biểu tượng trên hình nền trong hình ảnh được chụp màn hình, cộng với nó sử dụng độ phân giải của màn hình. Phải có cách tốt hơn.
Zachiel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.