如何使用cgi python脚本在浏览器中显示pdf文件内容及其全名?

如何使用cgi python脚本在浏览器中显示pdf文件内容及其全名?,第1张

概述我希望显示pdf文件的完整路径及其在浏览器上显示的内容.我的脚本有一个输入html,用户将输入文件名并提交表单.该脚本将搜索该文件,如果在子目录中找到该文件,则将文件内容输出到浏览器中并显示其名称.我能够显示内容,但也无法同时显示完整的名字.如果我显示文件名,我会看到内容的垃圾字符显示.请指导.enter link description here脚本a.p

我希望显示pdf文件的完整路径及其在浏览器上显示的内容.我的脚本有一个输入HTML,用户将输入文件名并提交表单.该脚本将搜索该文件,如果在子目录中找到该文件,则将文件内容输出到浏览器中并显示其名称.我能够显示内容,但也无法同时显示完整的名字.如果我显示文件名,我会看到内容的垃圾字符显示.请指导.

enter link description here

脚本a.py:

import osimport cgiimport cgitb cgitb.enable()import sysimport webbrowserdef check_file_extension(display_file):    input_file = display_file    nm,file_extension = os.path.splitext(display_file)    return file_extensionform = cgi.FIEldStorage()type_of_file =''file_nm = ''nm =''not_found = 3if form.has_key("file1"):    file_nm = form["file1"].valuetype_of_file = check_file_extension(file_nm)pdf_paths = [ '/home/nancy/documents/',]# Change the path while executing on the server,else it will throw error 500image_paths = [ '/home/nancy/documents/']if type_of_file == '.pdf':    search_paths = pdf_pathselse:    # .jpg    search_paths = image_pathsfor path in search_paths:    for root,dirnames,filenames in os.walk(path):        for f in filenames:            if f == str(file_nm).strip():                absolute_path_of_file = os.path.join(root,f)                # print 'Content-type: text/HTML\n\n'                # print '

HTML是一个常规的HTML,文件名只有1个输入字段.最佳答案这不可能.至少不那么简单.某些Web浏览器不显示pdf但要求用户下载文件,有些会自己显示文件,有些则嵌入外部pdf查看器组件,有些则启动外部pdf查看器.没有标准的跨浏览器方式将pdf嵌入到HTML中,如果要显示任意文本和pdf内容,则需要这样做.

在每个浏览器上工作的后备解决方案是将服务器上的pdf页面呈现为图像并将其提供给客户端.这给服务器带来了一些压力(处理器,内存/磁盘用于缓存,带宽).

一些支持HTML5的现代浏览器可以在canvas元素上呈现带有Mozilla’s pdf.js的pdf.

对于其他人,您可以尝试使用< embed> /< object>使用Adobe的插件作为described on Adobe’s The PDF Developer Junkie Blog.

在服务器上呈现页面

渲染和提供pdf页面作为图像需要服务器上的一些软件来查询页面数量并提取和呈现给定页面作为图像.

可以使用Xpdf或libpoppler命令行实用程序中的pdfinfo程序确定页数.将页面从pdf文件转换为JPG图像可以通过ImageMagick工具转换完成.使用这些程序的一个非常简单的CGI程序:

#!/usr/bin/env pythonimport cgiimport cgitb; cgitb.enable()import osfrom itertools import imapfrom subprocess import check_outputpdfINFO = '/usr/bin/pdfinfo'CONVERT = '/usr/bin/convert'DOC_ROOT = '/home/bj/documents'BASE_TEMPLATE = (    'Content-type: text/HTML\n\n'    'libpoppler有Python绑定,因此可以很容易地用该模块替换对外部pdfinfo程序的调用.它还可以用于提取页面的更多信息,例如pdf页面上的链接,以便为它们创建HTML图像映射.安装了libcairo Python绑定后,甚至可以在没有外部进程的情况下进行页面呈现.          总结       

以上是内存溢出为你收集整理的如何使用cgi python脚本在浏览器中显示pdf文件内容及其全名?全部内容,希望文章能够帮你解决如何使用cgi python脚本在浏览器中显示pdf文件内容及其全名?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1121932.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)