magick 图像库将 header 写入 PDF 文件不正确?
magick image library writing incorrect header to PDF files?
我正在使用非常有用的 magick
库来读取和注释 PDF 文件,并在结果上叠加图像。我可以生成一个 PDF 文件,看起来和我期望的一样。但是,当我打开文件时,header,我希望读取类似 %PDF-1.7
的内容,读取 ‰PNG
像这样。
在我看来,magick
正在查看最近的操作,即 PNG 文件的 image_composite
,并将其用于 header。如果是这样,这是一个错误吗?输出的 PDF 文件以其他方式显示 well-formed,因此它似乎没有引起问题,但我很好奇。以下代码应该可以重现问题。
require(magick)
require(pdftools)
pdf_file <- "https://web.archive.org/web/20140624182842/http://www.gnupdf.org/images/d/db/Hello.pdf"
image_file <- "https://upload.wikimedia.org/wikipedia/commons/thumb/8/87/PDF_file_icon.svg/200px-PDF_file_icon.svg.png"
my_image <- image_read(image_file,density = 300)
pdfimage <- image_read_pdf(pdf_file,density = 300)
pdfimage2 <- image_annotate(pdfimage, "test",
location = "+400+700", style = "normal", weight = 400,
size=42)
pdfimage3 <- image_composite(pdfimage2,my_image,operator="atop",
offset = "+100+100")
image_write(pdfimage3, path = "C:/temp/test.pdf", density = 300, flatten = TRUE)
我没有回答这个问题,因为解决方案非常明显。回想起来,我只是假设,因为我使用了 image_read_pdf
它应该并且会以 PDF 格式保存。我需要做的是明确指定它。在 image_write
调用中添加一个 format = "pdf"
参数实现了这一点。
image_write(pdfimage3, path = "C:/temp/test.pdf", density = 300, format = "pdf", flatten = TRUE)
这会生成格式正确的 PDF。问题解决了。吸取教训。
我正在使用非常有用的 magick
库来读取和注释 PDF 文件,并在结果上叠加图像。我可以生成一个 PDF 文件,看起来和我期望的一样。但是,当我打开文件时,header,我希望读取类似 %PDF-1.7
的内容,读取 ‰PNG
像这样。
在我看来,magick
正在查看最近的操作,即 PNG 文件的 image_composite
,并将其用于 header。如果是这样,这是一个错误吗?输出的 PDF 文件以其他方式显示 well-formed,因此它似乎没有引起问题,但我很好奇。以下代码应该可以重现问题。
require(magick)
require(pdftools)
pdf_file <- "https://web.archive.org/web/20140624182842/http://www.gnupdf.org/images/d/db/Hello.pdf"
image_file <- "https://upload.wikimedia.org/wikipedia/commons/thumb/8/87/PDF_file_icon.svg/200px-PDF_file_icon.svg.png"
my_image <- image_read(image_file,density = 300)
pdfimage <- image_read_pdf(pdf_file,density = 300)
pdfimage2 <- image_annotate(pdfimage, "test",
location = "+400+700", style = "normal", weight = 400,
size=42)
pdfimage3 <- image_composite(pdfimage2,my_image,operator="atop",
offset = "+100+100")
image_write(pdfimage3, path = "C:/temp/test.pdf", density = 300, flatten = TRUE)
我没有回答这个问题,因为解决方案非常明显。回想起来,我只是假设,因为我使用了 image_read_pdf
它应该并且会以 PDF 格式保存。我需要做的是明确指定它。在 image_write
调用中添加一个 format = "pdf"
参数实现了这一点。
image_write(pdfimage3, path = "C:/temp/test.pdf", density = 300, format = "pdf", flatten = TRUE)
这会生成格式正确的 PDF。问题解决了。吸取教训。