我有一个 PDF 文档,我想向其中添加内部超链接。具体来说,第 1 页包含一个我想要使其可点击的目录。我的想法是在第 1 页的预定位置创建矩形框,该矩形框应链接到第 2、3、...
我发现这篇文章讨论了使用上面描述的方法添加内部超链接。 http://bugs.ghostscript.com/show_bug.cgi?id=691531
但是,当我尝试在文件中使用此技术时,脚本仅添加带有矩形和超链接的页面。我需要它将超链接覆盖在我的第一页的现有内容上。
在 Ubuntu 中使用 Ghostscript 8.71,但无法读取所有页面上都有 times new roman 字体的 PDF 文件。
我下载了 msttcorefonts 包并为 Ghostscript 创建了一个 Fontmap 文件,但这似乎不起作用。
我的 Fontmap 文件如下所示:
/Times (/usr/share/fonts/truetype/msttcorefonts/times.ttf);
/Times-Roman (/usr/share/fonts/truetype/msttcorefonts/times.ttf);
/Times-Bold (/usr/share/fonts/truetype/msttcorefonts/timesbd.ttf);
/Times-BoldItalic (/usr/share/fonts/truetype/msttcorefonts/timesbi.ttf);
/Times-Italic (/usr/share/fonts/truetype/msttcorefonts/timesi.ttf);
Run Code Online (Sandbox Code Playgroud)
我使用的 Ghostscript 命令:
gs -sFONTMAP=/usr/share/ghostscript/8.71/Fontmap bad.pdf -o good.pdf
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
GPL Ghostscript 8.71 (2010-02-10)
Copyright (C) 2010 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 3.
Page 1
Error: /undefined in --run--
Operand stack:
--dict:5/14(L)-- F2 …Run Code Online (Sandbox Code Playgroud) 我想从具有自定义页码的 PDF 文件中提取页面,例如,有编号为 C1、C2、C3 的页面,然后从 1、2、3、4 等开始。
当我使用
$ gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER \
-dFirstPage=22 -dLastPage=36 \
-sOutputFile=outfile_p22-p36.pdf 100p-inputfile.pdf
Run Code Online (Sandbox Code Playgroud)
FirstPage 和 LastPage 是页面索引,从第一页开始计数 - 这不是我想要的
我如何告诉 GhostView 使用“真实”页码?
感谢您在以下方面的帮助:我有 2 个部分可访问的 PDF(包含标签),我想使用一些命令行工具(如 PDFtk 或 Ghostscript,或任何 Perl 模块)连接它们:我尝试使用 PDFtk 执行此操作和 Ghostscript,两者都输出一个不带原始标签的不可访问的 PDF(每个串联的 PDF 都有标签)。
您知道有什么方法可以使用上述工具之一或其他 Linux 命令行工具来实现此目的吗?(不一定是免费软件)Perl 模块也是一种选择。
谢谢!
我知道 Ghostscript 可以使用 -dfirstpage -dlastpage 仅从一系列页面创建文件,但我需要让它(或另一个命令行程序)删除任何未明确告知页面范围的 pdf 中的第二页。我认为这会容易得多,因为大多数打印机都允许您指定“1,3-end”,并且我一直在使用 PDFCreator 来这样做。
我能想到的一种方法(非常非常混乱)是提取第 1 页,提取第 3 页结束,然后合并两个 pdf。但我也不知道如何让 GS 确定页数。
我有一个 PDF 文档,每页底部都有超链接。上周我在 Windows 上使用 Adobe Acrobat X Pro 试用版成功删除了它们,但从那时起我丢失了新文档并安装了 Ubuntu 14.04。有没有一种方法可以像我在 Windows 上使用 Ghostscript 一样以编程方式执行(工具 > 编辑工具 > 删除)操作?我不想重新安装 Windows,但如果没有其他选择,我会这样做。
我在我的程序中实现了以下保存功能,它允许用户将他/她用 Turtle 在 Tkinter 画布上绘制的任何内容保存为 JPEG 文件。它的工作原理是首先捕获屏幕和 Tkinter 画布,然后基于它创建一个 postscript 文件。然后它将该 postscript 文件转换为 PIL(Python 成像库)可读文件类型,然后 PIL 将转换后的文件保存为 JPEG。我的保存功能如下所示:
def savefirst():
# Capture screen and Tkinter canvas
cnv = getscreen().getcanvas()
global hen
# Save screen and canvas as Postscript file
ps = cnv.postscript(colormode = 'color')
# Open a Tkinter file dialog that allows to input his.her own name for the file
hen = filedialog.asksaveasfilename(defaultextension = '.jpg')
# Convert Postscript file to PIL readable format
im = Image.open(io.BytesIO(ps.encode('utf-8')))
# Finally save converted …Run Code Online (Sandbox Code Playgroud) 我被卡住了,真的可以在这个问题上使用一些帮助。我正在使用 PHP 和 Imagick 生成一个运行良好的缩略图。但是,我注意到 CMYK PDF 总是以灰度生成。因此,我通过获取 CMYK PDF 并使用 Adobe Acrobat Pro 手动将其转换为 RGB 来对此进行测试。然后我通过以下代码重新运行它并生成了一个彩色图像。我知道
$image->transformImageColorSpace(1);
or
$image->setImageColorSpace(1);
Run Code Online (Sandbox Code Playgroud)
然而这行不通。将 pdf 转换为彩色 PNG 图像的正确方法是什么?我查看了以下链接但没有运气:
http://php.net/manual/en/imagick.setimagecolorspace.php
使用 PHP 和 ImageMagick 将 PDF 转换为 JPEG
对此的任何帮助都会很棒。
这是代码:
$filePath = fileSaveUserUpload("path/to/file", ""); //path changed here...
$_SESSION['FILEPATH'] = $filePath;
//-------------first makes a thumbnail of first page in image/pdf
$extension_pos = strrpos($filePath, '.'); // find position (number) of the last dot, so where the extension starts
$image = new Imagick();
$image->readImage($filePath."[0]"); //reads …Run Code Online (Sandbox Code Playgroud) 我有一些需要裁剪的 PDF 文件(裁剪到修剪框等),我可以使用以下命令进行裁剪
convert -define pdf:use-trimbox=true -density 300 original.pdf outcome.pdf
Run Code Online (Sandbox Code Playgroud)
它可以完成这项工作,但是如果没有原始 PDF 那样清晰,结果.pdf 的质量。当我在我的桌面软件 (Acrobat Pro) 上裁剪它们时,结果质量相同,但在 ImageMagick 中,我无法在结果中保持相同的质量。
我的问题是如何在不影响质量的情况下裁剪 pdf 页面?
数周以来,我一直在搜索和尝试不同的设置,但没有成功。
我已经使用命令合并了两个 PDF
$cmd = "gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$outputName ";这对我有用。但问题是新生成的 PDF 的标题没有按照我在
header('Content-Disposition: inline; filename="Test.pdf"');
我期望的标题为 Test.pdf 中设置的那样设置,但标题仍然是合并 PDF 中最后一个 PDF 的标题。