【问题标题】:How can I renderize a PDF into BMP fitting content to PDF page boundaries?如何将 PDF 呈现为适合 PDF 页面边界的 BMP 内容?
【发布时间】:2019-07-26 08:44:16
【问题描述】:

我正在使用 GhostScript 从 PDF 中获取 BMP,但其内容不适合页面边界。即使我尝试任何选项,我也无法获得适合的内容。

我尝试使用不同的 GhostScript 选项生成 BMP,但似乎没有人适合 100% 好的内容。

这是我尝试的最后一个命令。请不要指望它有我需要的东西,只是从 tty 复制粘贴。

gs -dBATCH -dNOPAUSE -sPAPERSIZE=a4 -dFIXEDMEDIA -dPSFitPage -sDEVICE=bmpmono -sOutputFile=Betlem.bmp -g1184x968 -c "<</PageSize [900 500]>> setpagedevice 0 0 translate" -c "<</PageOffset [-23 -100]>> setpagedevice" -f Betlem.pdf

我希望内容适合 BMP 图像边框,像素除外。我正在使用 OpenCV 和 Python 函数来提取内容并适合新图像,这是调试:

initial BMP image resolution = (872, 900)
BMP image resolution after fit content into new page = (541, 870)

请查看以下线程以了解 Python 中的拟合功能:

I can't find a way to fit contour on new image zero point

【问题讨论】:

    标签: pdf bitmap type-conversion ghostscript


    【解决方案1】:

    您对 PDF 文件使用 PSFitPage,您应该使用 PDFFitPage 或仅使用 FitPage

    请注意,这种情况下的“拟合”是将 PDF 媒体大小与现有媒体相匹配。如果 PDF 内容在媒体边缘留下空白,则生成的缩放将包括该空白。

    此外,您正在使用 PostScript 来偏移页面原点,这引入空白,并且您正在尝试更改媒体大小,这将不起作用,因为您已设置 @987654325 @。将这些与任何 FitPage 开关结合使用可能效果不佳。

    为了解决不同的问题,随意插入控件并复制一些代码可能对您没有帮助。

    如果没有示例文件,我当然无法告诉您如何解决您的问题,而且我也不确定您想要达到的目标。没有空白的位图?给定大小的位图,没有空白?还有什么?

    [编辑]

    好的,所以查看 PDF 文件,媒体框为 11.69x8.27 英寸,页面上的标记与媒体边缘之间的顶部、底部、左侧和右侧都有空白。

    通过 Ghostscript 运行,以 72 dpi 的 TIFF 生成文件,Adobe Photoshop 称其为 11.694x8.264 英寸,左上角和右下角有空白,就像 PDF 文件一样。

    默认情况下,Ghostscript 使用 PDF 中的媒体大小进行渲染,但是您可以更改此设置。如果您要将媒体尺寸更改为(例如)5.8x4.14 英寸,设置 -dFIXEDMEDIA 然后渲染 PDF 文件会发生什么情况是 PDF 文件的顶部和右侧将“离开页面”所以你只会得到左边的部分。试试这个:

    gs -DEVICEWIDTHPOINTS=421 -dDEVICEHEIGHTPOINTS=298 -dFIXEDMEDIA "A betlem m en vull anar(1).pdf"
    

    您会看到底部和左侧仍然存在空白,而顶部和右侧已从页面上脱落。

    现在,如果您添加 FitPage,它将缩小 原始 媒体,直到它适合新媒体大小(当然也包括所有内容)。如果你尝试:

    gs -DEVICEWIDTHPOINTS=421 -dDEVICEHEIGHTPOINTS=298 -dFIXEDMEDIA -dFitPage "A betlem m en vull anar(1).pdf"
    

    您会看到输出与上一个命令的物理尺寸相同,但现在可以看到整个 PDF 内容,因为它已按比例缩小。您还应该看到空白的分布发生了变化,因为我没有在每个方向上严格除以 2。 FitPage 开关将两个方向的内容缩放相同的量,并将 x 方向上的额外空间均匀地分配到每一侧,作为新的空白。

    现在我不知道你所说的“simmetric”是什么意思。毫无疑问,您可以使用 Ghostscript 和 PostScript 语言做您想做的事,但我不知道您想要什么。让我指点 Python 代码恐怕无济于事,我不会说 Python。

    我可以说 Ghostscript 不会添加原始文件中不存在的额外空白除非您通过添加 FitPage 和 FIXEDMEDIA 等参数来弄乱渲染。

    如果你能解释你想要达到的目标,我可能会告诉你该怎么做。

    【讨论】:

    • 您好,首先感谢您的回答! :- ) PDF 链接是 xn--estudiantladolaina-lvb.com/partitures/baixa/pdf/26 我正在尝试从该 PDF 生成单色但 simmetric 的 bmp。而且我想尝试不同的分辨率,直到我看到最好的结果……但是,GhostScript 在页面边界之间添加了空格,而且 PDF 确实有空格。我只是不明白 GhostScript 是如何工作的,即使阅读它的文档。
    猜你喜欢
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 2017-05-29
    • 1970-01-01
    相关资源
    最近更新 更多