注册 登录
编程论坛 VFP论坛

请教PDF文档如何加个公章,或将PDF转成图片

liunis 发布于 2023-06-28 19:06, 2441 次点击
请教下载的PDF文档要盖章如何操作,或将PDF转成图片
31 回复
#2
sam_jiang2023-06-29 11:41
通常pdf把图片以文件流方式保存在pdf文档里,可以用strextract(cpdfstr,"stream","endstream",n)获得图片文件流,然后strtofile保存就可以了。
#3
liunis2023-06-29 13:41
回复 2楼 sam_jiang
谢谢。本人愚钝,还请赐教。
cpdfstr='D:\1.PDF'
? strextract(cpdfstr,"stream","endstream",n)
n代表什么
"stream","endstream" 这两个词是什么意思
#4
nbwww2023-06-29 19:55
不止于吧  strextract就把PDF给干掉了
#5
nbwww2023-06-29 19:57
https://mupdf.
可以看下
#6
kmyz_yyl2023-06-29 22:51
回复 楼主 liunis


[此贴子已经被作者于2023-7-9 22:10编辑过]

#7
liunis2023-06-30 09:44
回复 6楼 kmyz_yyl
谢谢你。但不是要的答案。
是要将PDF 转为图片。
#8
sam_jiang2023-07-01 12:18
以下是引用liunis在2023-6-29 13:41:35的发言:

谢谢。本人愚钝,还请赐教。
cpdfstr=filetostr('D:\1.PDF')
? strextract(cpdfstr,"stream","endstream",n)
n代表什么,(n是第几个图片,这个你可以由occu()函数获得包含图片的数量))
"stream","endstream" 这两个词是什么意思
这2个单词是定位图片文件流的起始结束标志

cpdfstr=filetostr("d:\1.pdf")
cpicstream=strextract(cpdfstr,"stream","endstream",1) &&假设pdf里只有一张图片
cpicstream=SUBSTR(cpicstream,3,LEN(cpicstream)-2) &&去掉前导和尾随的回车字符
strtofile(cpicstream,"1.jpg")


[此贴子已经被作者于2023-7-1 12:32编辑过]

#9
sam_jiang2023-07-01 12:48
vfp9.0下实现pdftojpg:
只有本站会员才能查看附件,请 登录
#10
liunis2023-07-01 13:26
谢谢。试了一下还是不行。只得到一个没用的图标
我找到一个网页有多种方法。不知那位大师能帮转化:
https://www.
#11
sam_jiang2023-07-01 13:43
回复 10楼 liunis
你pdf里有几个图片,你发上来看看?
#12
liunis2023-07-01 17:32
谢谢。
cpdfstr=filetostr("d:\888.pdf")
cpicstream=strextract(cpdfstr,"stream","endstream",1) &&假设pdf里只有一张图片
cpicstream=SUBSTR(cpicstream,3,LEN(cpicstream)-2) &&去掉前导和尾随的回车字符
strtofile(cpicstream,"d:\888.jpg")

只有本站会员才能查看附件,请 登录


结果是:
只有本站会员才能查看附件,请 登录


#13
liunis2023-07-01 18:11
只有本站会员才能查看附件,请 登录

这个清晰的 也是不行
#14
liunis2023-07-01 18:28
只有本站会员才能查看附件,请 登录
#15
sam_jiang2023-07-01 19:27
看了你发来的pdf,分析了文件格式,发现你的这个pdf中提取的图片流只有一个前导字符,所以我的那段程序需要改进一下,呵呵。
cpdfstr=filetostr("d:\888.pdf")
cpicstream=strextract(cpdfstr,"stream","endstream",1) &&假设pdf里只有一张图片
if inlist(asc(subs(cpictream,2,1)),10,13)
    cpicstream=SUBSTR(cpicstream,3,LEN(cpicstream)-2)
else
    cpicstream=SUBSTR(cpicstream,2,LEN(cpicstream)-1) &&去掉前导和尾随的回车字符
endif
strtofile(cpicstream,"d:\888.jpg")
只有本站会员才能查看附件,请 登录
#16
liunis2023-07-01 20:34
回复 15楼 sam_jiang
谢谢,那个文档可以,但是换了别的文档又不行,这个文件头不知如何来分析,或许是PDF版本不同
只有本站会员才能查看附件,请 登录
#17
吹水佬2023-07-01 22:26
666.pdf 没有图片
888.pdf 没有文本
#18
zhken2023-07-01 23:14
https://blog.
PDF文件解析 有需要的可以研究一下,看有无帮助
用记事本可以打开PDF文件,可以看到相关的版本等信息
#19
nbwww2023-07-02 07:16
这个不香吗?

MuPDF Command Line Tools
MuPDF 的命令行工具都放在了一个命令文件中:mutool.exe

mutool draw 将页面转为图像等文件
draw 命令将文档渲染成图片,转换其他格式的矢量图或提取文本内容。

    mutool draw [options] file [pages]
支持的输入格式:pdf, xps, cbz, and epub
支持的输出格式:
- 图像:pbm, pgm, ppm, pam, png, tga, pwg, pcl
- 矢量:svg, pdf, and debug trace (as xml)
- 文本:plain text, html, and structured text (as xml)

Options:
-p password
文件是加密的话,用以输入密码。

-o output
指定输出的文件名,文件名可以嵌入指示页码(例如:“页面%d.PNG”),
并支持Prtf修改器,例如“%03d”。如果没有指定输出,输出将转到 stdout。从文件名可推断出输出格式。

-F format
指定输出格式,一般在输出到 stdout 时使用。

-R angle
指定顺时针旋转角度。

-r resolution
指定的分辨率。默认为 72 dpi。

-w width
指定页面宽度

-h height
指定页面高度

-f
精确匹配;在匹配指定的宽度/高度时忽略纵横比。

-B bandheight
本设置这在渲染过程中使用较少的内存。仅兼容PAM、PGM、PPM、PNM和PNG输出格式。和 md5 checksumming may 不能同时使用。

-W width
EPUB布局中的页面宽度。

-H height
EPUB布局中的页面高度。

-S size
EPUB布局中的字体大小

-U filename
指定用于EPUB布局的用户自定义的CSS样式表

-c colorspace
指定渲染的色彩空间。支持的色彩空间:单色、灰度、Grayα、RGB、RGBALPHA、CMYK、CMYKALPHA。允许的缩写:M,G,GA,RGBA,CMYKA。默认值是基于输出格式选择的。

-G gamma
伽马校正,0.7 或 1.4 常用于亮色或暗色文本的渲染。

-I
反转颜色

-s [mft5]
显示各种信息:
- m 用于字形缓存和总内存使用,
- f 用于页面特性,例如页面是灰度级还是颜色,
- t 用于每页渲染时间以及统计信息,
- 5 用于 md5 渲染图像的校验和,这些校验和可用于检查渲染是否已经改变。

-A bits
指定反锯齿位数。默认值为 8。

-D
禁止显示列表的使用。会导致速度减慢,但可减少内存的使用量。

-i
忽略错误。

-L
低内存模式(避免缓存对象在每个页面后清除缓存)。

-P
同时进行解释和渲染。

pages
逗号分隔的页码和范围列表(例如:1,5,10-15)。如果没有指定页面,则将呈现所有页面。

mutool convert 用于将文档转换成其他格式
mutool trace 这是一个调试工具,用于退踪打印图形的调用情况。
这些工具专门用于处理 PDF 文件:

mutool show 显示 PDF 文件中内部对象的工具。
mutool extract 提取图像和嵌入字体资源。
mutool clean 重写PDF文件。用于修复损坏的文件,或使PDF文件可编辑。
mutool merge 将多个输入文件合并为一个新的 PDF 文件
mutool create 从文本文件创建一个新的PDF文件。
mutool portfolio Manipulate PDF portfolios.
最后,有一个工具可以做任何你能想象到的事情:

mutool run 一种运行JavaScript程序的工具,可以访问MUPDF库函数。
#20
liunis2023-07-02 09:58
回复 19楼 nbwww
真香。
#21
sam_jiang2023-07-02 11:13
回复 16楼 liunis
思路错了,应该对榨出的数据流进行文件格式判定,以chr(255)+chr(216)开头的数据流,那就是jpg;pdf可以容纳多种文件格式,jpg只是其中一种。

有网友提供了很好的工具,那个比较成熟,拿来用最好,省得自己再去写代码。

当然,想研究自己的pdf解读器的,就需要研究一下pdf文档格式了,其实并不难,我不是部分实现了么?只是不够完善。不过这个666.pdf文档里好像没有图片,,榨出的数据流都是以x字符开头的,有哪位大侠知道这是什么文件格式的???
#22
liunis2023-07-02 11:53
回复 21楼 sam_jiang
的确是。那个现成的工具,我试了,还是有些不能转换的,并不是所有PDF都能转换,所以还是需要广大VFP爱好者努力,看能否将PDF玩转自如,像控制EXCEL和WORD那样顺畅。祝你生活愉快。
#23
nbwww2023-07-02 15:15
以下是引用liunis在2023-7-2 11:53:18的发言:

的确是。那个现成的工具,我试了,还是有些不能转换的,并不是所有PDF都能转换,所以还是需要广大VFP爱好者努力,看能否将PDF玩转自如,像控制EXCEL和WORD那样顺畅。祝你生活愉快。


来个不能转换的看看
#24
nbwww2023-07-02 15:25
只有本站会员才能查看附件,请 登录
#25
shizi02023-07-02 16:21
这个就结了?我很想知道怎么给图片加图像水印的问题,大家都关注PDF提取图片去了...
#26
吹水佬2023-07-02 16:40
回复 25楼 shizi0
楼上楼上...的贴有提到
#27
吹水佬2023-07-03 11:14
PDFlib以前也做过一个开源的PDFlib-lite项目(C源码),封装几个函数给vfp用应该可以满足基本的PDF文件处理。
#28
sxzjbb2023-07-04 10:39
最快用第三方OCX控件,直接转JPG
#29
sam_jiang2023-07-04 18:42
改天我来写一个,又不难。。。
#30
schtg2023-07-04 18:51
回复 29楼 sam_jiang
好!期待中...
#31
iswith2023-07-05 12:19
使用WebView2可以原生浏览PDF以及转换。
#32
pvm20002023-09-21 13:40
回复 19楼 nbwww
有用
1