Answers:
尚无完美的方法。最好的现有方法是从软件中心安装Xournal并用它打开PDF文件。它允许您注释它们,然后将整个内容导出为新的PDF。
由于您基本上是在原始PDF上标记一个新层,因此您必须在键入时对齐所有内容,并手动放置所有注释。对于简单的文档,这很容易做到。不过,对于较长的文档来说,这不是很实用。
在LibreOffice Draw中打开pdf,然后在其中复制/粘贴任何图像,包括签名的图像(或“ 插入-图片-从文件”),然后可以轻松调整/调整其大小以适应目的。之后,在“ 文件”-“导出为PDF”下
我尝试了上面提到的多种方法/软件,只是想分享自己的经验。
(尽管最初的问题并没有要求,但我已经对添加线条,矩形和形状的可能性发表了一些评论。)
可能是理想的解决方案。具有所有绘图工具等,并支持文本和插入图像。可以导入多页PDF。但是,导入时我的许多PDF都将损坏。字体似乎发生了变化,从而导致放置/间距问题(所有字体均嵌入PDF中)。我已经尝试了版本4和5,并且安装软件包libreoffice-pdfimport
没有帮助。
免费和开源。可以很好地导入多页PDF。有工具笔,荧光笔,文本,插入图像。(没有矩形或其他形状。)
免费和开源。适用于编辑文本,创建/填写表单,插入图像。还支持线条和矩形-具有自定义的线条宽度,颜色和填充。
以前称为PDF-XChange Viewer。商业产品,具有基本功能的免费版本。这是Windows程序,但与可以很好地配合使用wine
。
与Master PDF Editor非常相似(请参见上文)。
在某些有限的情况下是不错的选择。将所有未栅格化的图像栅格化,当然您将获得单个页面的单个图像,因此以后需要页面合并。有关使用签署PDF表单的一些建议,请参见http://colans.net/blog/signing-document-image-ubuntu-1210gimp
。
在线编辑/注释PDF。支持文本注释,但不支持线条和矩形。导入时,我尝试过的几乎所有pdf都已损坏。
免费和开源桌面发布软件。
导入时,我尝试过的大多数PDF都损坏了(比LibrOffice Draw导入要严重得多)-字体更改或字符放置错误。
我在uPdf方面有相当不错的经验。
sudo add-apt-repository ppa:atareao/updf
sudo apt-get update
sudo apt-get install -y updf
然后通过在Python脚本中编辑2行来修复错误。
启动uPdf,选择“ 添加图像”工具,在要签名签名的区域周围绘制一个矩形,然后选择带有签名的图像文件。具有透明背景的PNG效果最好。
Sejda PDF提供了一个PDF编辑器,可让您添加签名,图像,文本并编辑PDF文件中的现有文本。
您可以在线编辑PDF文件,也可以使用桌面pdf编辑器。
https://www.sejda.com/pdf-editor
您可以每小时免费在线编辑3个文档。开源PDF引擎,我是开发人员之一。
我只是遇到了一个叫做Master PDF Editor的软件,它确实运行良好。它是免费的,用于非商业用途,并且具有.deb软件包,可轻松在Ubuntu中安装。我能够将文本添加到PDF表单,以及将签名添加为图像,而无需转换文件或弄乱其原始格式。顾名思义,您甚至可以使用它来编辑PDF文件。
资料来源:http : //www.webupd8.org/2014/02/modify-pdf-files-in-linux-with-master.html
另一个选择是Scribus。我用它来完成您要的任务(粘贴签名图像)。
正如汤姆·布鲁斯曼(Tom Brossman)所说,没有完美的方法可以做到这一点,而Scribus就是这种情况。它必须将文件从pdf格式导入到本机,然后根据文档的不同而使文本混乱或显示的层不同。
以下示例中列出的示例C#代码可用于将图像添加到PDF文档文件。您可以轻松地将图像插入到任何需要准确位置的PDF页面。
public static string FolderName = "c:/";
private void button1_Click(object sender, EventArgs e)
{
string fileName = FolderName + "Sample.pdf";
REDocument doc = REFile.OpenDocumentFile(fileName, new PDFDecoder());//use PDFDecoder open a pdf file
REPage rePage = (REPage)doc.GetPage(0);
int width = 100;
int height = 60;
/// data[]: a byte array to contain color data (as same format as Image Data PixelArray in BMP file)
/// caller must provide correct color data; otherwise, unpredictable error may happen
byte[] data = new byte[width * height * 3];
// set bottom 20 lines to red
for (int rowIdx = 0; rowIdx < 20; rowIdx++)
{
for (int i = 0; i < width; i++) data[width * rowIdx * 3 + i * 3 + 2] = 0xFF;
}
// set top 10 lines to blue
for (int rowIdx = 0; rowIdx < 10; rowIdx++)
{
for (int i = 0; i < width; i++) data[width * (height - 1 - rowIdx) * 3 + i * 3] = 0xFF;
}
REImage reImage = new REImage(width, height, ImageMode.RGB888, data);
REFile.SaveDocumentFile(doc, "c:/reimage.pdf", new PDFEncoder());