3

我们使用 ABCPDF 的 8.1 版从 html 生成一些不错的 PDF 文档。

现在我们发现从 Adob​​e Reader 中打印会在页面的顶部和底部添加一些细边框,这些边框在显示文档时是不可见的。此外,当打印到 XPS 时,这些线条不可见。

我想我们一定错过了一些避免这种情况的设置?

目前我们打印这样的页面:

        using (var doc = new WebSupergoo.ABCpdf8.Doc())
        {
            doc.HtmlOptions.DoMarkup = false;
            doc.HtmlOptions.AddLinks = false;
            doc.HtmlOptions.FontEmbed = true;
            doc.HtmlOptions.Engine = EngineType.Gecko;

            //in case that we need to create more than 1 page, we need go get the PageId and use it
            int pdfPageId = doc.AddImageHtml(html);
            while (true)
            {
                doc.FrameRect();
                if (!doc.Chainable(pdfPageId))
                    break;
                doc.Page = doc.AddPage();
                pdfPageId = doc.AddImageToChain(pdfPageId);
            }

            for (int i = 1; i <= doc.PageCount; i++)
            {
                doc.PageNumber = i;
                doc.Flatten();
            }

            doc.Save(pathToSave);
        }

我知道 websupergoo 的人非常友好,回复很快。但我认为这也可以帮助其他人,所以我把它写在这里而不是给他们发电子邮件。

更新:

我试图通过更改打印文档的大小来摆脱 linex。我实际上尝试为 A4 Papersize 打印。我添加了一行代码来更改 MediaBox 的设置(文档建议这应该是可能的“doc.MediaBox = “A4””,但它不能直接分配):

            //set the printed area to A4
            doc.MediaBox.String = "A4";

结果:线条变得更粗,现在甚至可以在 Adob​​eReader 和 Foxit Reader 中打印之前看到。这还不是解决方案。

更新2:

我还需要设置文档的 Rect :

            //set the printed area to A4
            doc.Rect.String ="A4";
            doc.MediaBox.String = "A4";

结果:线条现在绘制在侧面,并且只能在打印时看到。这仍然不是完整的解决方案。

4

1 回答 1

4

好吧,从网上复制粘贴代码有它的危险!

这一行在内容周围添加了 Frame:

    doc.FrameRect();

我所要做的就是删除它..并且不再显示任何行。

直到现在我完全忽略了这一点。

在我还尝试了以下操作之前,它没有按预期工作:

    //set the width to 0, so Rectancles have no width
    doc.Width = 0;
    // set the color to white, so borders of Rectangles should not be black
    doc.Color.String = "255 255 255"; //Edited based on the comments.
于 2013-06-05T09:46:05.710 回答