【问题标题】:SWT Browser widget no longer displaying PDFs from local filesystemSWT 浏览器小部件不再显示来自本地文件系统的 PDF
【发布时间】:2021-09-08 01:37:51
【问题描述】:

我一直在我的 RCP 应用程序中使用 SWT 浏览器小部件来显示生成的文档(主要是 PDF)。

最近,小部件停止显示 PDF。仅显示深灰色背景。加载较大的文件时会出现明显的延迟,但结果始终相同。

它仍然可以毫无问题地显示其他文件类型,例如 TXT、XML、PNG、HTML。所有文件都在用户的临时文件夹中 (Windows)。因此,这似乎不是访问问题。

我一直在将应用程序从 Kepler 迁移到 2020/3,所以我猜测平台中发生了一些变化。另一方面,该公司一直在从 IE 转向 Chrome 作为其标准浏览器,但我认为这不应该成为问题。

我安装了 FF、IE 和 Chrome (Windows10),它们都可以显示 PDF。

我是否需要在浏览器中明确注册 PDF 插件或类似的东西?

我使用此视图进行交互测试:

package testbrowserpdf;

import java.io.File;
import java.net.MalformedURLException;

import javax.inject.Inject;

import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.part.ViewPart;

public class View extends ViewPart {
    public View() {
    }
    public static final String ID = "TestBrowserPdf.view";

    @Inject
    IWorkbench workbench;

    private Browser browser;

    @Override
    public void createPartControl(final Composite parent) {
        parent.setLayout(new GridLayout(1, false));
        
        Composite composite = new Composite(parent, SWT.NONE);
        composite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
        composite.setLayout(new GridLayout(2, false));
        
        Label lblPath = new Label(composite, SWT.NONE);
        lblPath.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
        lblPath.setText("Choose file...");
        
        Button btn = new Button(composite, SWT.PUSH);
        btn.setText("...");
        btn.addSelectionListener(new SelectionListener() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                FileDialog dialog = new FileDialog (parent.getShell(), SWT.OPEN);
                String file = dialog.open();
                if(file != null) {
                    File f = new File(file);
                    try {
                        lblPath.setText(f.getAbsolutePath());
                        browser.setUrl(f.toURI().toURL().toString());
                    } catch (MalformedURLException e1) {
                        e1.printStackTrace();
                    }
                }
            }
            
            @Override
            public void widgetDefaultSelected(SelectionEvent e) {
            }
        });
        
        browser = new Browser(parent, 0);
        browser.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
    }

    @Override
    public void setFocus() {
        browser.setFocus();
    }
}```

【问题讨论】:

  • 我在 Windows 上遇到了类似的问题,但问题是从 6 月 29 日docs.microsoft.com/en-us/windows/release-health/… 开始,在这次更新之后,网络浏览器是灰色的。并且似乎是 adobe acrobat reader 和本机浏览器的问题。例如,如果我安装 foxit 阅读器,则 pdf 会正常显示

标签: java eclipse eclipse-rcp


【解决方案1】:

这似乎是一个暂时的问题(正如@korogui 所建议的那样)。现在是 7 月 21 日,嵌入式 PDF 查看器又开始工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    相关资源
    最近更新 更多