题
我谨问,如果能够编辑的PDF文件的使用 xpdf 图书馆和如果是的如何?我猜这是可能的,但是我找不到任何教程,也没有文档xpdf所以我真的不知道:(.我也开放供使用的另一个图书馆如果任何其它支持 pdf 编辑。我只要求这样的图书馆是,它已经是一个 C++ 图书馆或至少一个 C 一个有交叉平台(Windows和Linux)
我只需要基本的编辑的一份pdf文件,例如:
"这是一个文本在pdf文档"将改为"这是一个 文本 在pdf"不同文本的颜色。
谢谢你的回复!
解决方案
只是让你了解的范围是什么你进入,"基本的编辑"的PDF格式的内容几乎总是非微不足道的。
网页内容PDF表示由短RPN程序上的油漆页。这是一个很小的语言相类似PostScript在语义,但没有循环结构或功能的定义(所以不存在停止问题)。在一个理智的世界,你的网页上的文字是要表示的是这样的:
BT /F1 12 Tf 72 720 Td (this is a text in a pdf document) Tj ET
这时翻译成更多的东西熟悉的,是这样的:
BeginText();
SetFont(F1, 12.0); // Font 1, 12.0 pt
TextMoveTo(72, 720);
ShowText("this is a text in a pdf document");
EndText();
因此,在这种情况下,必须将此转变为这样的事情:
BeginText();
SetFont(F1, 12.0); // Font 1, 12.0 pt
TextMoveTo(72, 720);
ShowText("this is a ");
SetFont(F2, 12);
ShowText("text");
SetFont(F1, 12);
ShowText(" in a pdf document");
EndText();
这将成为:
BT /F1 12 Tf 72 720 Td (this is a ) Tj /F2 12 Tf (text) Tj /F1 12 Tf
( in a pdf document) Tj ET
在相当PDF。问题是许多倍:
- 你要提取出来的页及其所有资源(非微不足道)
- 你必须产生一个新的网页,插入新的资源(你在添加一个新的字体)、嵌入的字体,如果允许的
- 改变流的内容的网页,以包括更改的内容。
和3你要去哪里获得挂了,因为有一个无限定数量的方式产生一个网页,具有内容的描述,即使有一个像样的图书馆,你就要有一个很难得到可能的70%。让我简要地描述为什么这样糟糕,因为它的声音。有PDF生成程序(我看着你,间输出格式和"后处理"系统),所有普通案文的一页上的第一个,然后放所有斜体文本,然后所有的大胆的文本。我发誓,我不是做这个了。某些程序要躺下文非常精确的,所以,如果你幸运的话,他们将使用TJ操作者其中规定了文本具有特定字距调整。如果你不幸运的话(这是多数的时间),他们反而奠定了案文的一组动作前每一个单字的页。什么如果你的案文奠定了我们的曲线上的或一个不寻常的取向(地图、广告)?什么有关的情况下,有人巧妙地变化的字体大小为一个更大的区别之间的上部和下情况或模拟小帽子?
这就是为什么,当我写了找到文本的工具,用于杂技演员1.0,它花了我两个月的汗水处理尽可能多的边缘的情况。这不是编辑文本,它只是试图找到一个单词或短语。
我不会推荐一个图书馆为你-对不起-是我给xpdf一个简短的看并不清楚它是否有PDF生成能力,或者如果它是一个简单的消费者。PdfLib,这是一个商业产品,似乎是产生PDF,尽管它不清楚,如果可以使用它,但是你可以肯定获得双方通过它们粘合在一起。
如果是我,我会使用的工具,我已经和我还有点害羞的这个任务。我的图书馆,正在使用的 Atalasoft,我工作的公司,以产生Pdf从整个布和做编辑在非常有限的领域(注释,文件元数据)。最难的部分是,我们尽我们最好的藏身的复杂性PDF从我们的客户。在一般情况下,我们的客户想要的 我们 要了解规范,而不是他们,让其余的容易-但是,任务如此(修订是另一个),都是很难做到不理解的深度PDF规范。如果你开始进入图书馆的世界PDF操纵,你应该开始读取的规范,尤其是第8章(制图)和第9章(文字),以及你会得到一个更好的理解什么你们要做的图书馆。