用C ++调整pdf文件内容

时间:2013-11-03 07:26:01

标签: c++ pdf

我有一个pdf文件,当我在记事本++中打开时,需要进行一些小调整。 如果我手动完成,它可以正常工作。 我想在一个小的c ++程序中完成它。 我尝试做的是读取二进制流,并在运行时调整内容。 例如:

std::ofstream outputStream(output,std::ofstream::out | std::ofstream::trunc | std::ofstream::binary);
std::ifstream inputStream( input, std::ofstream::in | std::ifstream::binary);
for(std::string stringInput; getline(inputStream,stringInput); )
{
    if (stringInput.find("abc") != std::string::npos && stringInput.find("#1") != std::string::npos)
      stringInput.replace(....);
outputStream << stringInput << endl;
stringInput.clear()
}

然而,它永远不会匹配。它在那里。不知道为什么。 我对二进制文件/ io方法做错了吗? 这是正确的方法吗? 当我尝试读取文本文件时,它没有写新行,除了字符之外它无法处理。我不确定为什么坚韧

2 个答案:

答案 0 :(得分:2)

您不希望在不包含行的文件上使用getline。一方面,它会使行结尾变得僵硬,这使得结果难以理解。

答案 1 :(得分:2)

获取一个PDF库,为您完成所有复杂的工作。

PDF文件格式非常复杂,您无法在一年或更短时间内正确实施。其他人在这方面做了很多好的工作,所以你应该相信他们

查找将PDF文件作为标记列表读取的PDF库。您的代码应如下所示:

PdfInputStream in("input.pdf");
PdfOutputStream out("out.pdf");
PdfToken token;

while (in >> token) {
  if (token.isText()) {
    token.replaceText("abc", "#1");
  }
  out << token;
}