检索具有原始大小和 dpi 的 pdf 页面位图

Retrieving pdf page bitmap with its original size and dpi

我想知道为什么我从页面中获取的位图 size/dpi 与我用来创建页面的位图不同。

示例:bmp 是一个 Bitmap,宽度为 1275,高度为 1651,dpi 为 150。我使用此位图创建页面。当我使用 PDFDraw 在代码末尾检索位图时,Bitmap b 在 150 dpi 下的宽度为 2657,高度为 3440。为什么会发生这种变化?我怎样才能恢复原来的位图?

//create a page
var imgRect = new Rect(0, 0, bmp.Width, bmp.Height);
pdftron.PDF.Page _currentPage = convertedPdf.PageCreate(imgRect);
imgRect.Dispose();

//start writing to a page                                               
elementWriter.Begin(_currentPage, ElementWriter.WriteMode.e_underlay, false);

//write the image   
var element = elementBuilder.CreateImage(_currentImg, new pdftron.Common.Matrix2D(bmp.Width, 0, 0, bmp.Height, 0, 0));                       
elementWriter.WritePlacedElement(element);

//cleanup
_currentImg.Dispose();

//add the page to the pdf
convertedPdf.PagePushBack(_currentPage);

//just a test for retrieving the page later on
PDFDraw drawer = new PDFDraw();
Bitmap b = drawer.GetBitmap(_currentPage);

您可以调用 Convert.ToPDF(pdfdoc, path_to_image) 并简单地传入图像的路径,PDFNet 将为您完成所有计算,并在最新版本中添加自动旋转。

特别是您的页面大小计算已关闭。它"should"是

var imgRect = new Rect(0, 0, bmp.Width / 150.0 * 72.0, bmp.Height / 150.0 * 72.0);

因此您将获得包含图像真实物理尺寸的 PDF 页面。