我正在尝试将文本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
以具有正确的结果外,我还有其他需要做的吗?
感谢您在评论中的有用反馈,我能够通过放置
来解决问题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");