1

对于一个项目,我们正在迁移到 Windows Azure。我必须确保 HTML 到 PDF 转换器将在 64 位工作角色上运行。

由于 Pechkin 不能作为 64 位应用程序运行,我决定使用 Tuesspechkin,因为它们应该非常相似并且都使用 wkhtmltopdf 将 HTML 转换为 PDF。

现在,我把这一切都设置好了,但生成的 PDF 有点令人失望。

问题:

  1. 字体呈现不同。使用 Pechkin,字体总是“锐利”,而 tuespechkin 使它非常粗体。结果在这里: http: //postimg.org/image/xngqxryn1/

    • 我尝试使用不同的字体(甚至是浏览器默认字体)。都渲染得很粗
    • 我尝试使用不同的对象和全局设置(DPI、大纲、压缩、命名;它从来没有太大变化)。
  2. 所有内容都是可选择和可复制的。我希望它更像一个图像(这是 pechkin 的默认设置)。对此的任何建议将不胜感激。

这是我用来将 HTML 转换为 PDF 的代码:

老佩奇金:

var documentConfig = new ObjectConfig()
            .SetAllowLocalContent(true)
            .SetLoadImages(true)
            .SetRunJavascript(true)
            .SetPrintBackground(true)
            .SetRenderDelay(15000);

var globalConfig = new GlobalConfig()
            .SetMargins(new Margins(50, 50, 100, 100))
            .SetDocumentTitle(company.Name)
            .SetPaperSize(PaperKind.A4);

var pechkin = new SynchronizedPechkin(globalConfig);
var buffer = pechkin.Convert(documentConfig, parsedHtml);

图斯佩奇金:

var converter = new ThreadSafeConverter(
                            //new ImageToolset(
                            new PdfToolset(
                                new Win64EmbeddedDeployment(
                                    new TempFolderDeployment()
                                )
                            )
                        );

        var documentConfig = new ObjectSettings {
            WebSettings = new WebSettings {
                EnableJavascript = true,
                PrintBackground = true, 
                PrintMediaType = true
            },
            LoadSettings = new LoadSettings {
                BlockLocalFileAccess = false,
                RenderDelay = 15000, 
            },

            HtmlText = parsedHtml
        };

        var globalConfig = new GlobalSettings();
        globalConfig.Margins = new MarginSettings(2.645833333333, 1.322916666667, 2.645833333333, 1.322916666667);
        globalConfig.Margins.Unit = Unit.Centimeters;
        globalConfig.DocumentTitle = company.Name;
        globalConfig.PaperSize = PaperKind.A4;
        globalConfig.UseCompression = false;
        globalConfig.DPI = 1200;


        var doc = new HtmlToPdfDocument {
            Objects = {
                 documentConfig 
             },
            GlobalSettings = globalConfig
        };

var buffer = converter.Convert(doc);

任何问题上的任何帮助将不胜感激!

4

1 回答 1

0

正如你所说,我无法解决问题。但是可以将 IIS 设置为运行 32 位应用程序。如这张照片:http: //i.stack.imgur.com/6l6Es.png

因此,您可以在 Azure 中运行 Pechkin。你可以在这看到更多。 https://codeutil.wordpress.com/2013/09/16/convert-html-to-pdf/

于 2015-11-10T07:07:47.190 回答