【发布时间】:2020-11-24 10:26:16
【问题描述】:
我正在尝试将视图呈现给 PrintedPdfDocument。正如预期的那样,页面的大小以 1/72 英寸为单位。因此,对于 A0 大小的页面(宽度 = 33.11 英寸),document.getPageWidth() 返回 2384 (33.11 * 72)。页面画布宽度等于 1 个像素等于 1/72 英寸单位 - 因此,pageCanvas.getWidth() 返回 2384。这在不同的设备上是正确的。到目前为止一切顺利。
我面临的问题是,在不同的设备上,为同一视图生成的 PDF 文档看起来不同。在某些设备上,它会在 PDF 页面上拉伸,而在某些设备上,它会按应有的方式呈现。
这可能是什么问题? PDF的生成不应该与设备无关吗?我注意到pageCanvas.getDensity() 在不同的手机上是不同的。为什么手机屏幕密度会影响 PDF 页面画布的密度?
鉴于数字上的 document.getPageWidth() 以 1/72 英寸为单位 == pageCanvas.getWidth() 以像素为单位,pageCanvas.getDensity() 不应该总是 72 DPI 吗?在某些手机上为 320(正确显示的位置),而在其他手机上为 420(视图被拉伸的位置)。
这里有点卡住,所以非常感谢任何指针。提前致谢!
【问题讨论】:
-
这是一个非常详细的描述,可能就足够了,但minimal reproducible example 永远不会受到伤害。
-
感谢瑞恩。这种行为实际上没有可变性——这在 100% 的时间内是可重现的。无论如何,我找到了我自己问题的答案 - 将在下面发布:)
标签: android pdf-generation android-canvas pixel-density android-pdf-api