小编kiz*_*zx2的帖子

在Qt中,我可以在QWebFrame :: print()中提供额外的渲染层吗?

我正在利用QWebFrame中的WebKit将HTML页面转换为PDF.在将页面发送到QPrinter之前是否可以应用一些额外的渲染逻辑?

我想要做的是能够将HTML中的链接和表单控件转换为PDF中的交互式对应,而不仅仅是矢量图形转储?

非常感谢任何指导!

pdf qt rendering webkit

5
推荐指数
1
解决办法
720
查看次数

高级Visual Studio功夫测试 - 在调试期间从立即窗口调用函数

我看到一些相关的问题已被提出,但它们要么太先进了,要么掌握或缺乏从头到尾的逐步指导(大多数人最终都在谈论他们自己的实验结果).好的,这是一个简单的程序:

#include <stdio.h>
#include <string.h>

int main()
{
    FILE * f;
    char buffer[100];

    memset(buffer, 0, 100);

    fun();

    f = fopen("main.cpp", "r");
    fread(buffer, 1, 99, f);
    printf(buffer);
    fclose(f);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它的作用基本上是打印本身(假设文件名是main.cpp).

如何在foobar.txt 不修改源代码的情况下打印另一个文件?它与通过VS运行它,踩过函数并在fread()调用之前劫持FILE指针有关.无需担心通过呼叫泄漏资源fclose().

我想简单f = fopen("foobar.txt", "r")这给了

CXX0017: Error: symbol "fopen" not found
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

编辑

在Windows FAQ调试Mozilla时偶然发现了解决方案.放入立即窗口的正确命令是

f = {,,MSVCR100D}fopen("foo.txt", "r")
Run Code Online (Sandbox Code Playgroud)

但是,它并没有真正回答这个问题:

  • 我仍然不明白这里发生了什么.
  • 如何系统地找出{,,MSVCR100D}任何给定方法的部分?我知道MSVCR版本在不同系统之间有所变化.我怎么能找到它?
  • 任何人都可以解释大括号的语法,特别是那两个逗号在那里做什么?使用这种语法有更多隐藏的宝石吗?

debugging runtime immediate-window visual-studio

5
推荐指数
1
解决办法
4008
查看次数

API设计:是"容错"的好事吗?

我已经整合了许多有用的答案,并在下面提出了我自己的答案


例如,我正在编写一个Foo需要显式初始化和终止的API .(应该是语言不可知的,但我在这里使用C++)

class Foo
{
public:
    static void InitLibrary(int someMagicInputRequiredAtRuntime);
    static void TermLibrary(int someOtherInput);
};
Run Code Online (Sandbox Code Playgroud)

显然,我们的图书馆并不关心多线程,重入或其他什么.让我们假设我们的Init函数只应该被调用一次,再次使用任何其他输入调用它会造成严重破坏.

将此信息传达给来电者的最佳方式是什么?我可以想到两种方式:

  1. 在里面InitLibrary,我是assert一些静态变量,它会责怪我的调用者初始化两次.
  2. 在里面InitLibrary,我检查一些静态变量,如果我的lib已经初始化,则默默地中止.

方法#1显然是明确的,而方法#2使其更加用户友好.我认为方法#2可能有一个缺点,即我的调用者不会意识到不应该InitLibrary被调用两次的事实.

每种方法的优缺点是什么?是否有更聪明的方法来颠覆所有这些?

编辑

我知道这里的例子非常人为.正如@daemon指出的那样,我应该初始化自己而不是打扰来电者.但实际上,有些地方我需要更多信息来正确初始化自己(注意使用我的变量名someMagicInputRequiredAtRuntime).这不仅限于初始化/终止,而是存在困境的其他情况,无论我是否应该选择引用和引用"故障托管"或失败.

idioms api-design

5
推荐指数
2
解决办法
463
查看次数

防止子进程创建可见窗口?

我正在尝试使用Office Automation(PIA)将某些.pptx文档转换为其他格式.但是,即使主窗口被隐藏,PowerPoint也会坚持显示进度条.

有什么办法可以阻止PowerPoint向主桌面显示任何Windows吗?

额外的信息:

我主要使用C#,COM PIA for Office interop.但我并不害怕深入研究C++:P

我像这样使用PIA启动PowerPoint

var app = new PowerPoint.Application();
var ppt = app.Presentations.Open("my.pptx");

// This line will show a progress dialog
ppt.SaveAs("out.pdf",
    PowerPoint.PpSaveAsFileType.ppSaveAsPDF,
    MsoTriState.msoTrue);

app.Quit();
Run Code Online (Sandbox Code Playgroud)

.net c# windows pinvoke

5
推荐指数
1
解决办法
1130
查看次数

"传统"COM和COM +之间的区别(在组件服务中)

通过"传统"方式,我的意思是在注册表中注册DLL.

似乎还有另一种方法来设置它,方法是转到mmc->组件服务 - > COM +应用程序并添加.tlb文件.

我有一个支持这两种方法的COM库.安装时,它将自己在注册表中注册为COM组件,它工作正常.但是,当我.tlb使用组件服务方法添加文件时,行为似乎不同,它开始发出错误.

我怀疑它与编组和进程间对象传输有关?(对不起,我真的是COM领域的菜鸟)

谁能指出我有一个很好的资源来清除我的理解?

windows com com+ component-services

4
推荐指数
1
解决办法
7892
查看次数

使用Xtend进行Android开发(再次)

我有两个主要的难点,以便编译以下简单的WebView示例:

  • 铸造部分(WebView)findViewById(R$id::webview)给出unresolved JvmIdentifiableElement

  • 匿名类部分完全不起作用.我想Xtend不支持它?

这是源代码:

package com.stackoverflow

import android.app.Activity
import android.webkit.WebView
import android.os.Bundle
import android.webkit.WebViewClient

class HelloWebViewActivity extends Activity
{
    WebView _webView

    override void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState)
        setContentView(R$layout::main)

        // Error "Couldn't resolve reference to JvmIdentifiableElement 'WebView'"
        _webView = (WebView)findViewById(R$id::webview)
        _webView.settings.javaScriptEnabled = true
        _webView.loadUrl("http://stackoverflow.com")

        // A bunch of complaints towards the anonymous class
        _webView.setWebViewClient(new WebViewClient()
        {
            override shouldOverrideUrlLoading(WebView view, String url)
            {
                view.loadUrl(url)
                true
            }
        })
    }
}
Run Code Online (Sandbox Code Playgroud)

和我的.classpath:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" …
Run Code Online (Sandbox Code Playgroud)

java eclipse android xtend

4
推荐指数
1
解决办法
1188
查看次数

使用IKVM转换JAR(Flying Saucer - xhtmlrenderer)

我想在.NET中使用Flying Saucer Java API,所以我尝试使用IKVM转换Flying Saucer库:

ikvmc core-renderer.jar
Run Code Online (Sandbox Code Playgroud)

出于某种原因,IKVMC给了我一个exe,core-renderer.exe所以我将其重命名为core-renderer.dll,添加到我的程序集中并被黑客攻击

using java.io;
using java.lang;
using com.lowagie.text;
using org.xhtmlrenderer.pdf;

namespace flying_saucer
{
    class FlyingSaucerApp
    {
        static void Main(string[] args)
        {
            // This works
            DocumentException dummy = new DocumentException();

            ITextRenderer renderer = new ITextRenderer();


            // For some reason, this raises NoClassDefFoundError                
            renderer.setDocument(File("hello.xhtml").toURI().toURL().toString());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,它正在给予java.lang.NoClassDefFoundError: com.lowagie.text.DocumentException.我意识到可能会抛出DocumentException一些东西ITextRender(),但我已经包含了com.lowagie.text什么想法?

.net java ikvm flying-saucer

3
推荐指数
1
解决办法
2778
查看次数