0

我正在尝试将文本 pdf 转换为图像 pdf,为此我找到了以下文章:

ABCpdf 将文本转换为图像

因此,我将代码生成了以下代码:

WebSupergoo.ABCpdf9.Doc firstDoc = new WebSupergoo.ABCpdf9.Doc();
WebSupergoo.ABCpdf9.Doc secondDoc = new WebSupergoo.ABCpdf9.Doc();

firstDoc.Read(@"C:\pdf1.pdf");

for (int i = 1; i <= firstDoc.PageCount; i++)
{
    secondDoc.Page = secondDoc.AddPage();
    firstDoc.PageNumber = i;
    secondDoc.MediaBox.String = firstDoc.MediaBox.String;

    using (Bitmap bm = firstDoc.Rendering.GetBitmap())
    {
        secondDoc.AddImageBitmap(bm, false);
    }
}

secondDoc.Save(@"c:\pdf2.pdf");

现在上面的代码运行良好,除非我有一些纵向布局的页面和横向布局的其他页面的 pdf 文档。最终发生的情况如下:

假设我有一个 pdf 文档;

Page 1 - portrait
Page 2 - landscape
Page 3 - portrait
Page 4 - portrait

此代码产生的结果是:

Page 1 - portrait
Page 2 - portrait
Page 3 - landscape
Page 4 - portrait

MediaBox除了设置正确的结果之外,我还需要做些什么吗?

4

1 回答 1

1

感谢评论中的有用反馈,我能够通过放置

secondDoc.Page = secondDoc.AddPage();

secondDoc.MediaBox.String = firstDoc.MediaBox.String;

工作代码现在如下所示:

WebSupergoo.ABCpdf9.Doc firstDoc = new WebSupergoo.ABCpdf9.Doc();
WebSupergoo.ABCpdf9.Doc secondDoc = new WebSupergoo.ABCpdf9.Doc();

firstDoc.Read(@"C:\pdf1.pdf");

for (int i = 1; i <= firstDoc.PageCount; i++)
{
    firstDoc.PageNumber = i;
    secondDoc.MediaBox.String = firstDoc.MediaBox.String;
    secondDoc.Page = secondDoc.AddPage();

    using (Bitmap bm = firstDoc.Rendering.GetBitmap())
    {
        secondDoc.AddImageBitmap(bm, false);
    }
}

secondDoc.Save(@"c:\pdf2.pdf");
于 2014-08-06T19:19:30.013 回答