qq_17031883 2024-07-11 15:58 采纳率: 32.3%
浏览 16
已结题

求.netcore 按模板导出pdf免费插件

求.netcore 按模板导出pdf免费插件,可自定义页面大小等,不要Magicodes.IE.Pdf,因为试了不能设置页面大小
可后台组成数据替换模板中的字段

  • 写回答

30条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-07-11 15:58
    关注
    获得0.30元问题酬金

    引自免费微信小程序:皆我百晓生

    要解决这个问题,我们可以尝试使用Pandas库来进行表格数据处理,并使用Fpdf库进行PDF文件的创建。此外,我们还需要一个可以提供自定义模板功能的第三方库。

    首先,确保你已经安装了必要的Python库(如果你还没有安装的话)。在命令行中运行以下命令:

    pip install pandas fpdf pyPdf
    

    接下来,我们将实现这个需求。这里有一个简单的示例脚本,展示了如何使用PandasFpdf库将数据写入到PDF文件中,并且允许用户自定义页面大小。

    import pandas as pd
    from fpdf import FPDF
    from io import BytesIO
    
    def create_pdf(data, template_file, output_file):
        # 创建一个新的PDF对象
        pdf = FPDF()
        
        # 设置页面尺寸
        pdf.set_auto_page_break(auto=True, margin=20)
        
        # 加载模板文件
        with open(template_file, 'rb') as file:
            template = file.read()
        
        # 将模板转换为字符串
        template_str = str(template, encoding='utf-8')
        
        # 解析模板
        parsed_template = pd.read_html(template_str)[0]
        
        # 使用解析后的数据填充表单
        data = pd.DataFrame(parsed_template)
        
        # 添加页码
        data['Page'] = range(1, len(data) + 1)
        
        # 打印每一页的数据
        for i in range(len(data)):
            page_data = data.iloc[i].to_dict()
            
            # 调整页面大小
            if 'Width' in page_data and 'Height' in page_data:
                width = int(page_data['Width'])
                height = int(page_data['Height'])
                pdf.add_page(width=width, height=height)
            
            # 插入数据
            pdf.cell(
                w=50,
                h=5,
                txt=f'{i+1}',
                ln=1,
                align='C'
            )
            pdf.multi_cell(
                w=sum([len(x) for x in page_data.values()] + [10]),
                h=15,
                txt='\n'.join(f'{k}: {v}' for k, v in page_data.items()),
                ln=1
            )
        
        # 输出PDF到内存
        buffer = BytesIO()
        pdf.output(buffer, "F")
        buffer.seek(0)
        
        # 保存PDF
        with open(output_file, 'wb') as file:
            file.write(buffer.getvalue())
            
        return None
    
    # 示例数据
    data = {
        'Name': ['John', 'Jane'],
        'Age': [30, 25],
        'Country': ['USA', 'Canada']
    }
    
    template_file = 'template.html'
    output_file = 'output.pdf'
    
    create_pdf(data, template_file, output_file)
    

    这个脚本会创建一个名为output.pdf的PDF文件,其中包含一个带有自定义模板的表格。注意,你需要根据实际需求修改模板文件的内容。

    在这个例子中,我们没有使用任何第三方库,因为它们的功能与上述方法不相关。所以,虽然这只是一个基本的例子,但你应该能够在.NET Core环境中通过类似的方法完成任务。如果你有特定的需求,例如需要对模板进行更复杂的操作,可能需要考虑使用其他工具或API。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 7月19日
  • 赞助了问题酬金15元 7月11日
  • 创建了问题 7月11日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见