【发布时间】:2020-08-02 20:02:57
【问题描述】:
我正在处理两个不相同的 PDF,但要对其应用相同的操作。
- 第一个是由 Microsoft Office 365 通过将 Word 文档下载为 PDF 生成的
- 第二个是由 Google Drive 通过将 Google Docs 文档下载为 PDF 生成的
我正在使用Aspose 处理一些初步代码,以使用完全相同的代码将相同的图像应用于两个 PDF 文件。我不倾向于立即责怪该库,因为它能够在对 Office 365 文档进行操作时生成正确的输出:
// note: Anyone familiar with the PDF format itself should have no
// issues inferring the low-level operations being performed here...
fun Page.writeImage(image: InputStream) {
val imageName = resources.images.add(image.inMemory());
val rectangle = rectangleFromTopLeft(0.0, 0.0, 400.0, 200.0);
val matrix = rectangle.defaultMatrix();
contents.add(listOf(
GSave(),
ConcatenateMatrix(matrix),
Do(imageName),
GRestore()
));
}
无论我提供哪个文件,这两种情况下矩形和矩阵的坐标都保持不变。
对于 Office 365 派生的 PDF,图像将按照我指定的方式应用于页面。奇怪的是,当我打开 Google Docs 派生的 PDF 时,图像被垂直翻转并位于页面底部!
View the four PDF files in their before and after states.
我希望任何 PDF 专家能够向我解释这里发生了什么。我最初的怀疑是 Google Docs PDF 中的某些先前状态或操作在我的图像操作之前生效。
也就是说,我对 PDF 规范还不够熟悉(还没有!)来挑选它...
【问题讨论】:
-
这与itext有何关系?
-
它没有。我将编辑问题以删除
itext标记。 -
这是因为无论我使用哪个库,都会发生这种情况。