标题:请问:将WORD某一页保存为图片怎么写
只看楼主
liunis
Rank: 1
等 级:新手上路
帖 子:108
专家分:7
注 册:2021-9-25
结帖率:84.85%
已结贴  问题点数:10 回复次数:26 
请问:将WORD某一页保存为图片怎么写
将WORD某一页保存为图片怎么写,比如一共有10页,将第3页存为图片
不要用PDF打印机
搜索更多相关主题的帖子: 保存为 WORD 打印机 图片 PDF 
2023-03-28 12:21
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
不好猜想
给个测试文件,说明要将哪一页存为什么格式图片。
2023-03-28 15:59
liunis
Rank: 1
等 级:新手上路
帖 子:108
专家分:7
注 册:2021-9-25
得分:0 
111.rar (13.57 KB)
2023-03-28 16:55
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
程序代码:
*
* WORD选择页另存为图片
*
DECLARE long OpenClipboard    IN user32 long
DECLARE long CloseClipboard   IN user32 
DECLARE long EmptyClipboard   IN User32
DECLARE long GetClipboardData IN user32 long

DECLARE long GdiplusStartup              IN gdiplus long@,string@,long
DECLARE long GdiplusShutdown             IN gdiplus long
DECLARE long GdipCreateBitmapFromHBITMAP IN gdiplus long,long,long@
DECLARE long GdipDisposeImage            IN gdiplus long
DECLARE long GdipSaveImageToFile         IN gdiplus long,string,string,long

cPath   = "d:\temp\test\111\"
inFile  = cPath + "111.doc"
outFile = cPath + "111.png"

stGSI = 0h01000000000000000000000000000000
pGDI  = 0
GdiplusStartup(@pGDI, @stGSI, 0)

wd  = CREATEOBJECT("Word.Application")
doc = wd.Documents.Open(inFile)

nPage = 2    && 选择的页号

rng = doc.GoTo(1, 1, nPage)                          && 页开始位置
rng.Select
rng.SetRange(rng.Start, rng.Bookmarks("\page").End)  && 整个页面区域
rng.Copy    &&CopyAsPicture 
wd.Documents.Close
        
wd.Documents.Add
wd.Selection.PasteSpecial(0, .f., 0, .f., 0, "", "")
wd.ActiveDocument.InlineShapes(1).Range.CopyAsPicture

ClipBitmapToFile(outFile)

wd.ActiveDocument.Saved = .t.
wd.Documents.Close
ClearClipboard()
wd.Quit
GdiplusShutdown(pGDI)
CLEAR ALL 
RETURN

FUNCTION ClearClipboard()
    OpenClipboard(0)
    EmptyClipboard()
    CloseClipboard()
ENDFUNC

FUNCTION ClipBitmapToFile(cOutFile)
    IF OpenClipboard(0) == 0
        RETURN .f.
    ENDIF
    LOCAL hClip
    hClip = GetClipboardData(2)
    IF hClip == 0
        CloseClipboard()
        RETURN .f.
    ENDIF
    LOCAL pngGUID, hBitmap
    pngGUID = 0h06F47C55041AD3119A730000F81EF32E
    hBitmap = 0
    GdipCreateBitmapFromHBITMAP(hClip, 2, @hBitmap)
    GdipSaveImageToFile(hBitmap, STRCONV(cOutFile+0h00,5), pngGUID, 0)
    GdipDisposeImage(hBitmap)
    CloseClipboard()
    RETURN .t.
ENDFUNC
2023-03-28 22:41
seasoners
Rank: 1
等 级:新手上路
帖 子:19
专家分:9
注 册:2013-12-15
得分:0 
版主您好,请问把一个50页的WORD文档拆分成50个单页的WORD文档如何实现?请在百忙中把主要源代码提示一下
2023-03-29 05:33
pvm2000
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:24
帖 子:159
专家分:256
注 册:2022-12-22
得分:0 
回复 4楼 吹水佬
多谢分享
2023-03-29 06:14
schtg
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1355
专家分:2534
注 册:2012-2-29
得分:0 
回复 4楼 吹水佬
谢谢!
2023-03-29 07:14
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用seasoners在2023-3-29 05:33:53的发言:

版主您好,请问把一个50页的WORD文档拆分成50个单页的WORD文档如何实现?请在百忙中把主要源代码提示一下

原理与另存图片差不多,相对简单点。
程序代码:
*
* WORD分页另存
*
cPath   = "d:\temp\test\111\"
inFile  = cPath + "111.doc"

wd  = CREATEOBJECT("Word.Application")
doc = wd.Documents.Open(inFile)

FOR nPage=1 TO doc.Range.Information(4)
    rng = doc.GoTo(1, 1, nPage)                          && 页开始位置
    rng.Select
    rng.SetRange(rng.Start, rng.Bookmarks("\page").End)  && 整个页面区域
    rng.Copy
    outFile = cPath + "page" + PADL(nPage,4,"0") + ".doc"
    tmpDoc = wd.Documents.Add
    tmpDoc.Application.Selection.Paste
    tmpDoc.SaveAs(outFile)
    tmpDoc.Close
ENDFOR

wd.Documents.Close
wd.Quit
CLEAR ALL 
RETURN
2023-03-29 08:37
seasoners
Rank: 1
等 级:新手上路
帖 子:19
专家分:9
注 册:2013-12-15
得分:0 
谢谢版主,另外有个问题,另存的图片和打开的原文内容(主要是页面中的文字显示位置)有些不一样,特别是一页的尾部如果不是一个完整段落,重新排格式了
2023-03-29 08:47
seasoners
Rank: 1
等 级:新手上路
帖 子:19
专家分:9
注 册:2013-12-15
得分:0 
2023-03-29 08:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511704-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.213476 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved