- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是来自 here 的跟进.我正在尝试重新加载 pdf 文件。基本上我想看 pdf 文件,当它发生变化时,在查看器中重新加载它。我找不到 python+gtk3 和 evince 的任何文档。
#!/usr/bin/env python
from gi.repository import Gtk, Gdk
from gi.repository import EvinceDocument
from gi.repository import EvinceView
import os,sys
if (len(sys.argv) is not 2):
print "Usage: "+sys.argv[0]+" file.ext"
sys.exit(0)
else:
docFile=os.path.abspath(sys.argv[1])
#==========================================================
# Evince viewer class
class EvinceViewer:
#------------------------------------------------------
# constructor to build GUI and hook up function
def __init__(self):
# create main window
self.window = Gtk.Window()
# set title, size, position
self.window.set_title("Evince")
self.window.set_default_size(800,600)
# connect destroy and delete events to quit
self.window.connect('destroy', Gtk.main_quit)
self.window.connect('delete-event',
Gtk.main_quit)
self.window.connect("key-press-event",
self.keypress)
# scrolled window for the viewer
scroll = Gtk.ScrolledWindow()
self.window.add(scroll)
# evince document
EvinceDocument.init()
doc = EvinceDocument.Document.factory_get_document(
'file://'+docFile)
# evince view
self.view = EvinceView.View()
# evince model
self.model = EvinceView.DocumentModel()
self.model.set_document(doc)
self.view.set_model(self.model)
# add to scroll window
scroll.add(self.view)
self.window.show_all()
self.fullscreen=False
#------------------------------------------------------
# handling keyboard events
def keypress(self,widget,event):
keyname = Gdk.keyval_name(event.keyval)
ctrl = event.state & \
Gdk.ModifierType.CONTROL_MASK
if ctrl:
if keyname=='r':
self.view.reload()
elif keyname == 'Return':
if self.fullscreen == False:
self.fullscreen=True
self.window.fullscreen()
else:
self.fullscreen=False
self.window.unfullscreen()
elif keyname=='q':
Gtk.main_quit()
def main(self):
Gtk.main()
if __name__ == "__main__":
evinceViewer = EvinceViewer()
evinceViewer.main()
重新加载功能似乎无法完成这项工作。出了什么问题?调用它时,文档查看器会显示一个乱七八糟的 pdf 文件版本。
最佳答案
根据 http://git.gnome.org/browse/evince/tree/libview/ev-view.c , ev_view_reload
和 ev_view_reload_page
只重绘页面;他们没有完成重新阅读文档。在您的情况下,如果您在不让库知道的情况下更改文件,它将假定文件没有更改并尝试使用内存中的引用表来呈现文档,从而导致其行为不正常。如果更改文档,则必须重新加载文档本身。
为此(第 63-64 行):
if keyname=='r':
self.model.get_document().load('file://'+docFile) # <- ADD THIS LINE
self.view.reload()
这实际上会导致库完全重新读取 PDF 文件的内容。
关于Python GTK3 Evince 查看器 - 如何重新加载文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10978447/
我试图在 Python 和 C 程序中嵌入 Evince (libevview-2.30),但它不起作用。我正在使用 Ubuntu Lucid。这是我的 C 代码: #include #includ
我正在使用 system() 在 Linux 上启动 evince,它工作正常,直到我加载文档并尝试关闭它。当我尝试关闭文档时 system() 永远不会返回: 我的代码: char systemSt
我有一个 wxPython 应用程序,我正在使用 Evince 来显示它生成的报告。由于我想在用户关闭相应的 Evince 实例后删除每个报告,我的应用程序使用一个执行 subprocess.call
我发现了如何使用 gvfs-info (https://askubuntu.com/questions/294285/where-are-evince-bookmarks-stored) 提取 evi
这是来自 here 的跟进.我正在尝试重新加载 pdf 文件。基本上我想看 pdf 文件,当它发生变化时,在查看器中重新加载它。我找不到 python+gtk3 和 evince 的任何文档。 #!/
使用深色主题,Evince 中的插入符(按 F7 进入插入符模式)颜色非常浅,因此在文档的通常白色背景下显示效果不佳。 我想解决这个问题,我打算破解一个主题来做这件事,但在挖掘时,似乎 evince
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
在 Org 模式下,当我尝试打开 PDF 文件的链接时,没有任何 react 。此外,当我执行 C-c C-e d 导出为 LaTeX 并处理为 PDF 并打开 PDF 时,生成但未打开。如何在 Ev
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我正在尝试使用 lucid-lynx gnome 的 python-evince 包编写一个简单的“hello-world”类型的程序,它将 Evince 嵌入到 python-gtk 窗口中。我在网
首先,让我感谢 SO 社区过去多次帮助我;你们是一个了不起的资源! 在我的工作中,我开发了一个 Web 应用程序,该应用程序使用在 Scribus 中创建的 PDF 模板和 iText Java 库来
我是一名优秀的程序员,十分优秀!