使用“Microsoft Print to PDF”和 Java 将文档转换为 PDF

2024-01-22

我目前正在 Microsoft Windows 主机上测试将 RTF/DOC 文档转换为 PDF。我有一段使用 Microsoft Word API 的工作和平代码,但由于许可证成本,我想摆脱它。

我的想法是,只需将 RTF“发送”到 Microsoft Print To PDF 打印机,就可以将 RTF 转换为 PDF。

我遇到的问题是,我一方面可以访问打印机,也可以得到输出,但文件已损坏。

如果我只是将生成的文件从 .pdf 重命名为 .rtf 并在 Microsoft Word 中打开它,内容将如下所示(它只是整个内容的摘录):

\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1031\deflangfe1031\themelang1031\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Courier New};}
{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial{\*\falt Arial};}{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New{\*\falt ?l?r ???fc};}
{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol{\*\falt Symbol};}{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}
{\f38\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}{\f39\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Arial Black;}
{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Courier New};}{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Courier New};}
{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Courier New};}
{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Courier New};}{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Courier New};}
{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Courier New};}
{\f40\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Courier New};}{\f41\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Courier New};}{\f43\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Courier New};}
{\f44\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Courier New};}{\f45\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Courier New};}{\f46\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Courier New};}
{\f47\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Courier New};}{\f48\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Courier New};}{\f50\fbidi \fswiss\fcharset238\fprq2 Arial CE{\*\falt Arial};}
{\f51\fbidi \fswiss\fcharset204\fprq2 Arial Cyr{\*\falt Arial};}{\f53\fbidi \fswiss\fcharset161\fprq2 Arial Greek{\*\falt Arial};}{\f54\fbidi \fswiss\fcharset162\fprq2 Arial Tur{\*\falt Arial};}
{\f55\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew){\*\falt Arial};}{\f56\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic){\*\falt Arial};}{\f57\fbidi \fswiss\fcharset186\fprq2 Arial Baltic{\*\falt Arial};}
{\f58\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese){\*\falt Arial};}{\f60\fbidi \fmodern\fcharset238\fprq1 Courier New CE{\*\falt ?l?r ???fc};}{\f61\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr{\*\falt ?l?r ???fc};}
{\f63\fbidi \fmodern\fcharset161\fprq1 Courier New Greek{\*\falt ?l?r ???fc};}{\f64\fbidi \fmodern\fcharset162\fprq1 Courier New Tur{\*\falt ?l?r ???fc};}{\f65\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew){\*\falt ?l?r ???fc};}
{\f66\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic){\*\falt ?l?r ???fc};}{\f67\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic{\*\falt ?l?r ???fc};}{\f68\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese){\*\falt ?l?r ???fc};}
{\f380\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f381\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}{\f383\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f384\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}
{\f387\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f388\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}{\f420\fbidi \fswiss\fcharset238\fprq2 Tahoma CE;}{\f421\fbidi \fswiss\fcharset204\fprq2 Tahoma Cyr;}
{\f423\fbidi \fswiss\fcharset161\fprq2 Tahoma Greek;}{\f424\fbidi \fswiss\fcharset162\fprq2 Tahoma Tur;}{\f425\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew);}{\f426\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic);}
{\f427\fbidi \fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f428\fbidi \fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}{\f429\fbidi \fswiss\fcharset222\fprq2 Tahoma (Thai);}{\f430\fbidi \fswiss\fcharset238\fprq2 Arial Black CE;}
{\f431\fbidi \fswiss\fcharset204\fprq2 Arial Black Cyr;}{\f433\fbidi \fswiss\fcharset161\fprq2 Arial Black Greek;}{\f434\fbidi \fswiss\fcharset162\fprq2 Arial Black Tur;}{\f437\fbidi \fswiss\fcharset186\fprq2 Arial Black Baltic;}
{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Courier New};}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Courier New};}
{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Courier New};}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Courier New};}
{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Courier New};}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Courier New};}
{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Courier New};}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Courier New};}
{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Courier New};}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Courier New};}
{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Courier New};}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Courier New};}
{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Courier New};}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Courier New};}
{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Courier New};}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Courier New};}
{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}
{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Courier New};}

我假设我没有正确读取该文件。或者可能写得不正确?没有把握。 也许缺少一个属性——我只是认为这是错误的一件小事。

我有以下代码:

import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.Copies;
import javax.print.attribute.standard.Destination;
import javax.print.event.PrintJobAdapter;
import javax.print.event.PrintJobEvent;
import java.io.File;
import java.io.FileInputStream;
import java.net.URISyntaxException;
import java.util.Arrays;


public class Program {


    public static final String myPath = "C:/Project Files/Template";
    public static final String myFile =  "CreditNoteEnglish.rtf";
    public static final String myFile2 =  "CreditNoteEnglish.pdf";
    public static void  main (String[] args)
    {
        try {
            convertToPDF_PerPrint(myPath, myFile);
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }

    }

    private static void convertToPDF_PerPrint( String Verzeichnis,  String pFileName) throws URISyntaxException {
        final String defaultPrinterName = "Microsoft Print To PDF";
        DocFlavor docType = DocFlavor.INPUT_STREAM.AUTOSENSE;
        PrintRequestAttributeSet printerSettings = new HashPrintRequestAttributeSet();
        PrintService PDFPrinter = null;
        File myFile = new File(Verzeichnis + "/" + pFileName);
        File outFile = new File (Verzeichnis + "/" + myFile2);
       // printerSettings.add(MediaSizeName.ISO_A4);
        printerSettings.add(new Destination(outFile.toURI()));
        printerSettings.add(new Copies(1));
        PrintService[] printServices = PrintServiceLookup.lookupPrintServices(docType,printerSettings);
        try
        {
            if(printServices.length == 0)
            {
                throw new Exception("No printers found for given attributes");
            }
            System.out.println ( "Available printers: " + Arrays.asList ( printServices ) );

            for(PrintService availableService : printServices)
            {
                if(availableService.getName().contains("PDF"))
                {
                    PDFPrinter = availableService;
                    break;
                }
            }            if (PDFPrinter == null)
        {
            throw new IllegalStateException("Can not find PDF printer.");
        }

            FileInputStream fileAsStream = new FileInputStream(myFile);

            System.out.println ( Verzeichnis + "\\" + pFileName );
            System.out.println ( fileAsStream.read() );
            DocPrintJob myPrintJob =  PDFPrinter.createPrintJob();
            Doc myConvertableFile = new SimpleDoc(fileAsStream, DocFlavor.INPUT_STREAM.AUTOSENSE,null);
            PrintJobWatcher watcher = new PrintJobWatcher(myPrintJob);
            myPrintJob.print(myConvertableFile, printerSettings);
            watcher.waitForDone();
            fileAsStream.close();
        }
        catch(Exception e)
        {
            System.out.println(e);
        }
    }
}

class PrintJobWatcher {

    boolean done = false;

    PrintJobWatcher(DocPrintJob job) {
        job.addPrintJobListener(new PrintJobAdapter() {
            public void printJobCanceled(PrintJobEvent pje) {
                allDone();
            }

            public void printJobCompleted(PrintJobEvent pje) {
                allDone();
            }

            public void printJobFailed(PrintJobEvent pje) {
                allDone();
            }

            public void printJobNoMoreEvents(PrintJobEvent pje) {
                allDone();
            }

            void allDone() {
                synchronized (PrintJobWatcher.this) {
                    done = true;
                    System.out.println("Printing done ...");
                    PrintJobWatcher.this.notify();
                }
            }
        });
    }

    public synchronized void waitForDone() {
        try {
            while (!done) {
                wait();
            }
        } catch (InterruptedException e) {
        }
    }
}

有谁知道为什么在使用上面的代码时无法使 Microsoft Print to PDF Printer 生成正确的 PDF?

任何提示将不胜感激。

非常感谢。


Windows vanilla print() 是基于文本的,因此通过记事本或其他文本模式打印到 pdf 将简单地生成包含输出的 pdf,就像以文本格式查看文件一样。您不需要所有代码,在记事本中打开 rtf 并打印到 pdf 也会做同样的事情。

对于打印 html 或 xml(文本),我们可以使用 Edge 做得更好。然而,对于图像,我们需要通过绘画/图像应用程序进行路由,对于 MS 文档,我们需要一个 MS 文档处理程序。

到目前为止最简单的方法要在没有库的情况下将 MS RTF/Doc/DocX/Odt 转换为 MS PDF,可以通过已获得许可的 shell 应用程序“Write”或“写字板”,但存在一些限制,即 RTF 必须与写字板兼容,而不会抛出“不支持某些功能”的消息。注意表格必须具有要打印的边框宽度,因为图像中的可见线条和透明度可能会产生奇怪的结果,因此最好保持简单。很少支持背景图像。保持 RTF 极其简单,就像用纯文本行编辑器或批处理文件编写一样。该页面将是当前的 MS PDF 默认值(此处使用以前的 A4 横向)除非您使用 PrintUI 预先调整方向或格式。

避免尝试将图像手写为富文本:-)这是可能的,但寿命还不够长,以下是此示例 RTF 的前几行:-

{\rtf1\ansi\ansicpg1252\deff0\nouicompat

{\fonttbl
{\f0\fnil\fcharset0 Calibri;}
{\f1\froman\fcharset0 Times New Roman;}
{\f2\fnil\fcharset0 Segoe UI;}
}

{\colortbl ;\red255\green0\blue0;}
{\*\generator Riched20 10.0.19041}

\viewkind4\uc1
\pard\sa200\sl240\slmult1\f0\fs22\lang9

{\pict{\*\picprop}\wmetafile8\picw24818\pich5001\picwgoal3495\pichgoal705 
010009000003a6ae000000007dae000000000400000003010800050000000b0200000000050000
000c02bd00aa03030000001e00040000000701040004000000070104007dae0000410b2000cc00
bd00aa0300000000bd00aa030000000028000000aa030000bd0000000100040000000000000000
000000000000000000000000000000000000000000ffffff00ccffff003399ff00c0c0c0008080
800033333300000000000000000000000000000000000000000000000000000000000000000000
000000111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111111111

在更简单的表格之前,该图像还需要 2290 行文本。

因此,使用Word或写字板插入图片或注入解码的img2rtf图像。

对于命令行打印,只需 shell 命令,如下所示

write /pt file.doc "printer name" "printer driver name" "port address"
  • 您可以使用 write(通常是 2 个存根)或写字板(主要引擎)
  • /pt 打印到
  • 对于“Microsoft Print to PDF”,打印机和驱动程序具有相同的名称
  • 端口地址可以是远程 pdf 打印机或默认端口提示:或端口文件名
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用“Microsoft Print to PDF”和 Java 将文档转换为 PDF 的相关文章

  • 如何使用Spring WebClient进行同步调用?

    Spring Framework in 休息模板 https docs spring io spring framework docs current javadoc api org springframework web client R
  • 如何强制jar使用(或jar运行的jvm)utf-8而不是系统的默认编码

    我的Windows默认编码是GBK 而我的Eclipse完全是utf 8编码 因此 在我的 Eclipse 中运行良好的应用程序崩溃了 因为导出为 jar 文件时这些单词变得不可读 我必须在 bat 文件中写入以下行才能运行该应用程序 st
  • 如何将jscrollpane添加到jframe?

    我有以下源代码 有人可以给我建议如何将 jscrollpane 添加到 jframe 上吗 我尝试了几次将其添加到 jframe 但没有任何进展 它甚至没有显示 public class Form3 JFrame jframe new JF
  • 在 Struts 2 中传递 URL 参数而不使用查询字符串

    我想使用类似的 URL host ActionName 123 abc 而不是像这样传递查询字符串 host ActionName parm1 123 parm2 abc 我怎样才能在 Struts 2 中做到这一点 我按照下面的方法做了
  • tomcat 7.0.50 java websocket 实现给出 404 错误

    我正在尝试使用 Java Websocket API 1 0 JSR 356 中指定的带注释端点在 tomcat 7 0 50 上实现 websocket 以下是我如何对其进行编码的简要步骤 1 使用 ServerEndpoint注解编写w
  • 是否可以从 servlet 内部以编程方式设置请求上下文路径?

    这是一个特殊情况 我陷入了处理 企业 网络应用程序的困境 企业应用程序正在调用request getContext 并将其与另一个字符串进行比较 我发现我可以使用 getServletContext getContextPath 获取 se
  • 从休眠乐观锁定异常中恢复

    我有一个这样的方法 Transactional propagation Propagation REQUIRES NEW public void doSomeWork Entity entity dao loadEntity do some
  • Eclipse - 安装新的 JRE (Java SE 8 1.8.0)

    我正在尝试安装 Java 8 到目前为止我所做的 安装最新版本的 Eclipse 下载并安装 Java SE 运行时环境 8http www oracle com technetwork java javase downloads jre8
  • 如何删除日期对象的亚秒部分

    当 SQL 数据类型为时间戳时 java util Date 存储为 2010 09 03 15 33 22 246 如何在存储记录之前将亚秒设置为零 例如 在本例中为 246 最简单的方法是这样的 long time date getTi
  • 用于缓存的 Servlet 过滤器

    我正在创建一个用于缓存的 servlet 过滤器 这个想法是将响应主体缓存到memcached 响应正文由以下方式生成 结果是一个字符串 response getWriter print result 我的问题是 由于响应正文将不加修改地放
  • 我们如何测试包私有类?

    我正在看书Effective Java in Item 13 Minimize the accessibility of classes and members 它提到 为了方便测试 您可能想让类 接口或成员更易于访问 这在某种程度上是好的
  • 在 Clojure 中解压缩 zlib 流

    我有一个二进制文件 其内容由zlib compress在Python上 有没有一种简单的方法可以在Clojure中打开和解压缩它 import zlib import json with open data json zlib wb as
  • 如何从 Ant 启动聚合 jetty-server JAR?

    背景 免责声明 I have veryJava 经验很少 我们之前在 Ant 构建期间使用了 Jetty 6 的包装版本来处理按需静态内容 JS CSS 图像 HTML 因此我们可以使用 PhantomJS 针对 HTTP 托管环境运行单元
  • 无需登录即可直接从 Alfresco 访问文件/内容

    我的场景是这样的 我有一个使用 ALFRESCO CMS 来显示文件或图像的 Web 应用程序 我正在做的是在 Java servlet 中使用用户名和密码登录 alfresco 并且我可以获得该登录的票证 但我无法使用该票证直接从浏览器访
  • 如何让 Emma 或 Cobertura 与 Maven 一起报告其他模块中源代码的覆盖率?

    我有一个带有 Java 代码的多模块 Maven 设置 我的单元测试在其中一个模块中测试多个模块中的代码 当然 这些模块具有相互依赖性 并且在测试执行之前根据需要编译所有相关模块中的代码 那么 如何获得整个代码库覆盖率的报告 注意 我不是问
  • 禁用 Android 菜单组

    我尝试使用以下代码禁用菜单组 但它不起作用 菜单项仍然启用 你能告诉我出了什么问题吗 资源 菜单 menu xml menu menu
  • JMS 中的 MessageListener 和 Consumer 有什么区别?

    我是新来的JMS 据我了解Consumers能够从队列 主题中挑选消息 那么为什么你需要一个MessageListener因为Consumers会知道他们什么时候收到消息吗 这样的实际用途是什么MessageListener 编辑 来自Me
  • ECDH使用Android KeyStore生成私钥

    我正在尝试使用 Android KeyStore Provider 生成的私有文件在 Android 中实现 ECDH public byte ecdh PublicKey otherPubKey throws Exception try
  • 使用 JFreeChart 为两个系列设置不同的 y 轴

    我正在使用 JFreeChart 使用折线图绘制两个数据系列 XYSeries 复杂的因素是 其中一个数据系列的 y 值通常远高于第二个数据系列的 y 值 假设第一个系列的 y 值约为数百万数量级 而第二个数据系列的 y 值约为数百万数量级
  • 如何使用通配符模拟泛型方法的行为

    我正在使用 EasyMock 3 2 我想基于 Spring Security 为我的部分安全系统编写一个测试 我想嘲笑Authentication http docs spring io autorepo docs spring secu

随机推荐

  • 如何向 R matplot 添加颜色匹配的图例

    我使用 matplot 在图表上绘制几条线 matplot cumsum as data frame daily pnl type l 这给了我每行的默认颜色 这很好 但我现在想添加一个反映相同颜色的图例 我怎样才能实现这一点 请注意 我首
  • 为什么Flow需要对导出函数的参数进行注释?

    以下代码 流动游乐场 https flowtype org try 0PQKgBAAgZgNg9gdzCYAoVUCuA7AxgFwEs5swBDACgAcBKMAbwF9UBbOAE0xgFMA6bgB5U4AJ3wBnMAF5yQA f
  • 将 CollectionView Item VisualElement 的 VisualState 传递给其子 VisualElements

    我遇到以下情况 CollectionView 每一项都是Border 包含其他控件 选择后 边框的 VisualState 更改为已选择 然而 子控件的状态没有改变 有没有一种简单的方法可以将这些 VisualStates 链接 传递给所有
  • 使用递推方程的程序的时间复杂度

    我想使用递归方程找出程序的时间复杂度 那是 int f int x if x lt 1 return 1 else return f x 1 g x int g int x if x lt 2 return 1 else return f
  • 如何在 AntD Reactjs 中打开表格行按钮上的模态并访问模态中的表格数据

    我在 antd 表中显示用户数据 并在表中为每行创建了编辑按钮来访问每行记录 我想在 编辑 按钮单击时打开模态并在模态中获取相应的行数据 但无法 因为它给出了错误 showModal 未定义 版本 antd 4 18 9 axios 0 2
  • 在IOS中使用Web服务时出现NSURLSession内存泄漏

    我正在构建一个使用 Web 服务的应用程序 并从我使用的 Web 服务中获取信息NSURLSession and NSURLSessionDataTask 我现在处于内存测试阶段 我发现NSURLSession正在导致内存泄漏 这还不是所有
  • 使用 htaccess 文件删除文件扩展名 .php

    我想通过 htaccess 文件从 url 中删除 php 例如 home php 到 home 我在 htaccess 文件中使用以下重写规则 RewriteRule 1 php L 我还想将登录名指定为索引 我该如何改变它 这是可用于隐
  • 如何通过ajax使用Materialize自动完成插件?

    我正在努力共同努力MaterializeCSS 自动完成插件 http materializecss com forms html autocomplete使用我的 ajax 调用 以便根据输入字段中键入的内容动态加载数据 我的 ajax
  • 如何在 NumericUpDown 中保留有效值而不是分配最大值?

    假设我有 NumericUpDownMaximum 99 and Minimum 99和初始值 23 如果用户将焦点设置到此控件并输入1 那将是123现在 它改变了它的价值99 我该如何保留23而不是将值更改为允许的最大值 我尝试捕获 Ke
  • 什么是缓动函数?

    动画上下文中的缓动功能是什么意思 看来dojo jquery silverlight flex等UI系统都有缓动功能的概念 我找不到缓动函数的良好解释 任何人都可以解释缓动函数的概念 或者对它们给出一个很好的解释 我对这个概念感兴趣 而不是
  • 如何将 android.support.v7.* (appcompat) 导入到 AIDE

    任何人都知道如何将 android 支持导入 AIDE 编译器应用程序 经过大量时间的搜索并在 Alan Downie 的帮助下 感谢你 这里是使用 AppCompatActivity 与支持库版本 27 的说明 使用最新的支持库非常重要
  • 如何在 php 中反转数组而不使用数组反转方法

    我想知道如何在不使用 array reverse 方法的情况下反转数组 我有一个名为反向数组的数组 这是我想要反转的数组 我的代码如下 有人可以指出我做错了什么 因为我在其他地方找不到任何以这种方式反转数组的示例 我的代码如下
  • C 中的字符串分割器 - 它是如何工作的?

    我继承了一个庞大的代码库 并且有一个实用函数可以分割字符串 字符 我了解大约 80 的运作方式 但我不明白 token 0 line 任何指点都将受到高度赞赏 include
  • tomcat websocket servlet监听端口

    我正在尝试编写一个使用的 servletorg apache catalina websocket WebSocketServlet 我找到了一个 websocket 聊天的示例 但我不知道如何指定 websocket 服务器的侦听端口 在
  • 如何隐藏 TVirtualStringTree 节点?

    如果我没记错的话 在一个节点中不可能有不可见的节点 TVirtualStringTree 树视图 因为没有启用 可见或其他 属性来这样做 我的说法正确吗 如果是 我如何设法拥有不可见的节点 我的树的结构 One Node Another n
  • Android:如何获取当前主题的资源ID?

    在 Android 中 您可以获取 Activity 的当前主题Resource Theme对象来自getTheme 另外 您可以通过其他主题的资源 ID 将主题设置为不同的主题 如下所示setTheme R style Theme MyT
  • 无法从tensorflow.keras.metrics导入指标

    我想编写一个我正在关注的自定义指标评估器这个链接 https www tensorflow org beta guide keras training and evaluation specifying a loss metrics and
  • Django runserver 在开发中不提供静态文件

    我正在使用 Djangorunserver为了我的发展 当我部署到生产服务器时 我可以看到所有静态文件 但看不到本地计算机上的文件 I did collectstatic我已经设置了DEBUG True 我在网上找到了很多不同的意见 其中最
  • mpi 中的 darray 和 subarray 有什么区别?

    我有一个用于并行编程类的并行 I O 项目 并且我必须实现派生数据类型 我不太清楚darray和subarray之间的区别 darray 是否可以从动态分配的数组派生 主要区别是什么 子数组可让您描述较大多维数组的单个块 切片 如果每个 M
  • 使用“Microsoft Print to PDF”和 Java 将文档转换为 PDF

    我目前正在 Microsoft Windows 主机上测试将 RTF DOC 文档转换为 PDF 我有一段使用 Microsoft Word API 的工作和平代码 但由于许可证成本 我想摆脱它 我的想法是 只需将 RTF 发送 到 Mic