Cách đó cũng tương tự như cách bài 5 tôi đã giới thiệu rồi còn gì
Cách đổi đuôi thành ZIP hoặc RAR chỉ áp dụng được với định dạng docx hoặc xlsx trong khi cách Save As Web Page áp dụng được tất tần tật
Tôi chậm hiểu nên nhờ
ndu giải thích.
Tôi đọc chủ đề thấy nói là cần ghi từng trang thành JPG. Tôi hiểu là vd. có 5 trang thì ghi 5 trang thành 5 JPG. Bây giờ chủ topic lại khoe rằng tìm ra cách đơn giản để lấy "ảnh nhúng", tức lấy tất cả các ảnh đã "nhúng" trong 5 trang? Những cái "ảnh nhúng" này thì có điểm gì giống với ảnh của 5 trang?
Vậy thì "ta" muốn gì? Lấy "ảnh nhúng" hay lấy ảnh của các trang?
Nếu là ảnh nhúng thì Web Page --> mở bằng trình duyệt --> thích ảnh nào thì chuột phải rồi save chứ còn gì nữa
------------
Nếu ai có WORD 2007 thì: Nút Office --> Save As --> Find Add-ins for others file formats --> trong trang help mở ra có đường dẫn để tải "Microsoft Save as PDF or XPS Add-in for 2007 Microsoft Office"
Sau khi tải về và cài đặt thì: Save As --> chọn PDF or XPS
----------------
Nếu ai đó thích "vọc" code hoặc muốn giúp tôi thử nghiệm thì xin vui lòng đọc tiếp.
Khi đọc các thuộc tính trong WORD thì tôi thấy: Window có thuộc tính Panes mà mỗi Pane có thuộc tính Pages là tập các Page. Nhìn qua thì tôi "cảm thấy" nếu có 5 trang thì sẽ có 5 Page trong tập Pages. Page lại có thuộc tính EnhMetaFileBits
Cái tên
EnhMetaFileBits đã nói "rất nhiều", tôi đoán là nó trả về một mảng bai "đại diện" cho hình ảnh của trang. Đọc help về EnhMetaFileBits thì thấy đúng là thế. Vậy tôi nảy ra ý tưởng ghi mảng bai đó ra đĩa và gán cho nó định dạng "emf". Thực ra lúc này chưa có "điểm bám" nên cứ ghi bừa ra thế để xem "mặt mũi" cái ghi ra nó thế nào.
Để làm điều này tôi thao tác như sau: mở tập tin DOC --> Alt + F11 --> đúp chuột vào ThisDocument --> Insert --> Module --> Module1 được thêm vào. Sau đây là code của Module1:
[GPECODE=vb]
Private Declare Function CopyEnhMetaFile Lib "gdi32.dll" Alias "CopyEnhMetaFileA" (ByVal hemfSrc As Long, ByVal lpszFile As String) As Long
Private Declare Function SetEnhMetaFileBits Lib "gdi32.dll" (ByVal cbBuffer As Long, ByRef lpData As Byte) As Long
Private Declare Function DeleteEnhMetaFile Lib "gdi32.dll" (ByVal hemf As Long) As Long
Sub hichic()
Dim pg As Page, m() As Byte, h As Long, k As Long, ImageStream As Object
For Each pg In Application.ActiveWindow.Panes(1).Pages
m = pg.EnhMetaFileBits
h = SetEnhMetaFileBits(UBound(m) + 1, m(0))
CopyEnhMetaFile h, "c:\hichic" & CLng(k) & ".emf"
DeleteEnhMetaFile h
k = k + 1
Next
End Sub
[/GPECODE]
Chọn Run để chạy Sub hichic.
Trên C tôi đã có ảnh của các trang.
Bây giờ là khúc mắc của tôi, nhờ các bạn kiểm tra hộ.
Khi tôi chuột phải lên tập tin EMF và chọn Preview (Preview mặc định của Windows) thì tôi thấy ảnh của trang. Nhưng khi tôi chuột phải và chọn Paint để mở thì có vấn đề - Paint chiếm RAM vài trăm MB và "nghĩ mãi". Mở bằng Corel cũng không chuẩn.
Nhưng nếu tôi chuột phải và chọn Misrosoft Office Picture Manager thì tôi có ảnh. Nếu tiếp theo tôi chọn File --> Export --> chọn Format là JPG thì sau đó tập tin JPG mở được ngon lành bằng Paint, Corel hay bất cứ ct nào.
Thực ra tôi có thể thay ghi trực tiếp mảng bai ra đĩa bằng cách thay code Sub hichic bằng code:
[GPECODE=vb]
Sub hichic()
Dim pg As Page, m() As Byte, h As Long, k As Long, ImageStream As Object
For Each pg In Application.ActiveWindow.Panes(1).Pages
m = pg.EnhMetaFileBits
Open "c:\bla" & CLng(k) & ".emf" For Binary As #1
Put #1, , m
Close #1
k = k + 1
Next
End Sub
[/GPECODE]
Thì các kết quả như nhau, tức mở bằng Paint, Corel có vấn đề nhưng chuột phải chọn Preview hay chọn Misrosoft Office Picture Manager thì xem được và Export ngon lành. Chỉ có điều các tập tin EMF ở trường hợp sau có dung lượng lớn hơn.
Nhờ các bạn kiểm tra mở thẳng tập tin EMF bằng Paint xem thế nào.