这是要求,用户需要能够在浏览器中查看上传的 PDF。他们需要能够向 PDF 添加注释并将更新的 PDF 保存到服务器,而不必将其保存到他们的机器并在浏览器之外打开它。
欢迎任何关于如何实现这一目标的想法。
顺便说一句,我正在使用 asp.net 网站(使用 C#)。
我无法控制 pdf 的外观。它是在客户端上传的,然后其他用户需要查看并在 pdf 顶部添加注释。
我想的解决方案是将 PDF 呈现为 jpeg 并使用 javascript 绘制注释应该去的位置的坐标。
这是创建 json of note 的 html 和 javascript 的快速示例(使用 jQuery。)
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
<style type="text/css">
*
{
margin:0;
padding:0;
}
#PDF
{
position:absolute;
top:0;
bottom:0;
width:600px;
height:800px;
background:url(assets/images/gray.png) repeat;
float:left;
}
#results
{
float:right;
}
.comment
{
position:absolute;
border:none;
background-color:Transparent;
height:300px;
width:100px;
overflow:auto;
float:left;
top:0;
right:0;
font-family: Arial;
font-size:12px;
}
div.comment
{
padding-top:-20px;
}
.comment a.button
{
display:block;
padding-top:-20px;
}
</style>
</head>
<body>
<div>
<div id="PDF"></div>
<div id="results">
</div>
</div>
</body>
</html>
<script type="text/javascript" src="script/jquery.js"></script>
<script type="text/javascript">
var points = [];
$("#PDF").click(function(e) {
if ($("textarea.comment").length == 0) {
var that = this;
var txt = $("<textarea class='comment'></textarea>").css({ top: e.pageY, left: e.pageX }).blur(function() { $(this).remove(); }).keypress(function(e2) {
if (e2.keyCode == 13 && !e.shiftKey) {
var that2 = this;
$("#PDF").append($("<div class='comment'>").html(that2.value.replace(/\r/gi, "<br>")).css({ top: e.pageY, left: e.pageX }));
$(this).remove();
points.push({ "x": e.pageX, "y": e.pageY, "text": that2.value })
$("#results").append('{ "x": ' + e.pageX + ', "y": ' + e.pageY + ', "text": "' + that2.value + '" }<br/>');
}
});
$(this).append(txt);
txt.each(function() { this.focus(); })
}
});
</script>
所以现在我需要弄清楚如何:
- 将 pdf 渲染为 jpeg。
- 重新创建 PDF,将注释放在上面。
最佳答案
您可以使用 GhostScript将 PDF 呈现为 JPEG。
命令行示例:
gswin32c.exe -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -r300 -sOutputFile=output.jpg input.pdf
您需要通过命令行版本(如上所述)调用 GhostScript 或使用包装器。 谷歌搜索出现了这篇博文:
要创建新的 PDF,您有两个主要选择:
- 修改JPEG并将JPEG转为PDF(可以使用GhsotScript进行转换)
- 使用导入原始 PDF 并在其上添加数据的 PDF 库
对于 PDF 库,请参阅此 SO 问题:
关于c# - 如何在浏览器中编辑pdf并将其保存到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2292126/