如何在浏览器中编辑pdf并将其保存到服务器

Ken*_*h J 16 .net c# pdf asp.net pdf-generation

以下是要求,用户需要能够在浏览器中查看上载的PDF.他们需要能够向PDF添加注释并将更新的PDF保存到服务器,而无需将其保存到计算机并在浏览器外部打开.

关于如何实现这一点的任何想法都受到欢迎.

顺便说一句,我正在使用asp.net网站(在C#中).


我无法控制pdf的外观.它是客户端上传的,然后其他用户需要在pdf上查看和注释.

我想的解决方案是将PDF渲染为jpeg并使用javascript绘制笔记应该去的位置的坐标.

这里是一个简单的html和javascript示例,用于创建note的json(使用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>
Run Code Online (Sandbox Code Playgroud)

所以现在我需要弄清楚如何:

  1. 将pdf渲染为jpeg.
  2. 重新创建PDF,将注释放在上面.

Pet*_*son 6

您可以使用GhostScript将PDF呈现为JPEG.
命令行示例:

gswin32c.exe -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -r300 -sOutputFile=output.jpg input.pdf
Run Code Online (Sandbox Code Playgroud)

您需要通过命令行版本(如上所述)调用GhostScript或使用包装器.谷歌搜索发现了这篇博文:

要创建新PDF,您有两个主要选择:

  • 修改JPEG并将JPEG转换为PDF(您可以使用GhsotScript进行转换)
  • 使用PDF库导入原始PDF并在其上添加数据

对于PDF库,请参阅此SO问题:


pli*_*nth 5

我的公司Atalasoft提供的组件可让您查看文档图像,包括PDF并对其进行注释并将注释保存回PDF.在我们的产品套件中,您需要dotImage文档成像和PDF Reader附加组件.您将通过我们的AJAX Web控件使用dotAnnotate.这是我们在线演示链接 - 显示的文档是TIFF,但您也可以使用PDF.